2010-06-29 3 views
0

Je pratique mes compétences jQuery (ok, j'apprends aussi) et j'ai eu un problème. J'ai reçu un formulaire de téléchargement de fichier avec entrée de fichier. J'utilise ce plugin (http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Uploading) pour télécharger plusieurs fichiers à la fois. Je suis donc en utilisant la saisie formulaire suivant:jQuery AJAX Form, impossible d'envoyer un tableau?

<input type="file" class="multi" name="photo[]" accept="gif|jpg|jpeg|png" maxlength="5"/> 

maintenant ... Je suis en train d'envoyer une requête AJAX dans le fichier php qui va gérer la validation côté serveur et téléchargement:

$('#upload_photos_s').click(function(q){ 

    var photo = $('[name=photo[]]').val(); 

    // Process form 
    $.ajax({ 
     type: "POST", 
     url: "upload.php", 
     data: 'photo[]='+photo, 
     success: function(html){ 
      alert($('[name=photo[]]').val()); 
      $("#photo_upload_form").html(html); 
     } 
    });    
    return false; 
}); 

Bien que en utilisant Firebug je peux voir qu'il n'y a qu'un seul fichier dans la photo [].

Des suggestions pourquoi? Y a-t-il quelque chose qui me manque?

Cordialement, Tom

Répondre

1

En l'état actuel, vous interrogez en effet la valeur du premier membre ne photo[]. photo[].val() ne retournera pas un tableau contenant toutes les valeurs.

Vous devez parcourir chaque membre de photo[], par ex. en utilisant each(), pour construire un tableau de valeurs.

Cependant, je ne suis pas sûr que ce soit le bon chemin à suivre pour tout ce que vous voulez faire. Vous savez que ce que vous faites est de télécharger les noms de fichiers seulement, pas leurs données?

Il n'est pas possible de télécharger des fichiers en utilisant AJAX sans l'aide d'outils supplémentaires tels que SWFUPload basé sur Flash. C'est à des fins de sécurité pour empêcher les scripts d'avoir un accès direct aux fichiers locaux.

Peut-être que ce que vous essayez de faire est le mieux adapté pour une approche où la propriété target du formulaire pointe à . Cela ne déclencherait pas un rechargement de la page, mais soumettrait toujours le formulaire de manière "traditionnelle", permettant des téléchargements de fichiers old-school.

+0

+1 pour avoir signalé l'erreur lors de l'utilisation d'une entrée de fichier 'value' à télécharger. – peirix

-1

Bien sur le lien que vous avez fourni, il y a une partie appelée Ajax qui spécifie la façon la plus simple d'utiliser le plugin jQuery Form.

La documentation des plugins aide beaucoup ^^. Bonne journée :)

+0

-1 N'a rien à voir avec le problème. –