2010-10-23 9 views
2

J'ai actuellement un formulaire avec une seule entrée de téléchargement de fichier dessus.

l'entrée de forme originale que j'ai essayé

<input type="file" name="userFile[]" /> 
and 
<input type="file" name="userFile1" /> 

J'ai aussi un lien pour générer plus de champs d'entrée en utilisant

Si ont essayé des méthodes de:
a)

counter = 1; 
    function addInput(){ 
counter ++; 
    $('#divName').append('&lt;input type="file" name="userFile[]" ' />);   
} 

b)

var counter = 1; 
function addInput(){ 
counter++; 
$('#divName').append('&lt;input type="file" name="userFile'+counter+'" ' />); 
} 

Je ne pense pas que le problème est lié à JS ici, mais peut-être le serveur je pense.

Le problème est que quand je enfin sur le bouton Envoyer et passer les fichiers sur le serveur et essayez d'accéder à tous les $_FILES['userFile']['name']/['size']/['error'] etc valeurs, seules les premières valeurs de téléchargement de formulaires originaux peuvent être résonnaient/imprimé. J'ai essayé de télécharger des fichiers de grande taille pour les tests. Je sais que tous les fichiers sont téléchargés, mais une fois qu'il est sur le serveur, un seul peut être consulté.

Quelqu'un peut-il me dire ce qui pourrait se passer? J'espère que j'ai bien expliqué, posez-moi des questions si vous avez besoin d'éclaircissements.

plus d'info

après certains, il semble plus de tests comme Jquery pourrait être la question après tout. Dans la méthode mentionnée ci-dessus de duplication des champs, seule la première entrée d'origine est reconnue lorsque les fichiers sont téléchargés. Mais si je crée trois champs de saisie d'origine et que je les charge normalement, tous les fichiers du tableau $_FILES sont reconnus comme ils devraient l'être. Pourquoi les champs générés par jQuery ne sont-ils pas affichés dans le formulaire?

+0

Avez-vous vérifié par [la page de manuel] (http://www.php.net/manual/en/features.file-upload.multiple.php)? En particulier, la note à propos de 'max_file_uploads'? – lonesomeday

+0

Est-ce que je comprends bien, que vous essayez d'itérer sur le tableau '$ _FILES ['userFile'] ['name']'? Essayez d'itérer sur $ _FILES ['userFile'] à la place. – NOtherDev

+0

même si je n'imprime que l'intégralité du tableau $ _FILES, il ne me donne que le premier fichier téléchargé comme tel: Array ([userFile] => Array ([name] => Array ([0] => IMG_0003 (2) .JPG) [type] => Tableau ([0] => image/jpeg) [nom_tmp] => Tableau ([0] => C: \ serveur \ tmp \ php924.tmp) [erreur] => Tableau ([0] = > 0) [size] => Array ([0] => 1777374))) – Ryan

Répondre

1

J'ai trouvé cet article et j'ai trouvé la réponse qui était assez simple malheureusement.

jQuery not posting all inputs of a form after the .append()

Je devais déplacer la forme <> élément en dehors du tableau avec mes entrées puis tout cela a fonctionné. Je ne sais pas pourquoi mais c'est intéressant. Merci pour ceux qui ont aidé.

0

J'ai eu le même problème .. Tous mes efforts ont été vains, mais finalement j'ai trouvé une bonne note au PHP Manual. Il est simple, mais me convenait parfaitement ...

« envoyer plusieurs fichiers pourrait ne pas fonctionner si vous utilisez une table pour afficher vos entrées de formulaire lorsque l'élément <form> est intérieur l'élément <table>. Dans ce cas seul le premier fichier sera téléchargé.

Mettre l'élément <form>extérieur l'élément pour le faire fonctionner. »

Suivez ce lien pour la bonne note, il y a une fonction pour réorganiser les multiples tableau de fichier de téléchargement dans un facile à -Utiliser manière.

http://php.net/manual/en/features.file-upload.multiple.php

+0

La validation du code HTML a également aidé. J'avais un défaut – michalzuber