Bonjour,
J'ai un input="file" multiple. J'ai également le script php d'upload de fichiers, mais je n'arrive pas envoyer ces fichiers à PHP via JSON et les récupérer dans PHP pour uploader.
Quelqu'un peut-il m'aider SVP
Version imprimable
Bonjour,
J'ai un input="file" multiple. J'ai également le script php d'upload de fichiers, mais je n'arrive pas envoyer ces fichiers à PHP via JSON et les récupérer dans PHP pour uploader.
Quelqu'un peut-il m'aider SVP
On veut bien t'aider mais il faudrait montrer un peu de code, ce que tu as essayé, les problèmes que tu rencontres, etc...
il n'est pas possible d'envoyer un fichier par ajax
ajax converse avec le serveur en string ...
il existe des bidouilles qui permette de recupérer le code du fichier coté client et de l'envoyer au serveur sous form de string ...
Voilà en fait ce que le fais
Coté HTML
Code:
1
2
3
4
5 <span class="file-wrapper"> <input type="file" name="photo[]" id="photo" multiple="multiple" size="100"/> <span class="button">Choose a Photo</span> </span><br> <input type="button" value="Envoyer Repertoire" id="envoyerFichier" />
Coté JQUERY
Et puis Coté PHP, code standardCode:
1
2
3
4
5
6
7
8
9
10
11
12 $('#envoyerFichier').click(function () { var files = $('input[type="file"]')[0].files; var data = {files: files}; $.post('enregistrerFichier.php', data, function(output) { alert(output); }); });
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 $targetFolder = 'upload/files/Commentaires'; // Relative to the root if (!empty($_FILES)) { $tempFile = $_FILES['files']['tmp_name']; $targetPath = $_SERVER['DOCUMENT_ROOT'].$targetFolder; $targetFile = rtrim($targetPath,'/').'/'.$_FILES['files']['name']; // Validate the file type $fileTypes = array('jpg','jpeg','gif','png','txt','doc','docx','xls','pdf','xlsx'); // File extensions $fileParts = pathinfo($_FILES['files']['name']); if (in_array($fileParts['extension'],$fileTypes)) { move_uploaded_file($tempFile,$targetFile); echo $targetFolder.'/'.$_FILES['files']['name']; //echo $_SERVER['DOCUMENT_ROOT']; } else { echo 'Invalid file type.'; } }
Merci
il vient d'ou le .files ?Code:var files = $('input[type="file"]')[0].files;
http://jsfiddle.net/Ytf3M/96/
A priori pas crossbrowser ...
ffx n'aime pas
Hum... si, il fait partie de l'API des input de type file. Seuls IE et Opera (:aie:) ne sont pas compatibles.
:nono:Code:
1
2 files[i].fileName; files[i].fileSize;
;)Code:
1
2 files[i].name; files[i].size;
http://jsfiddle.net/Ytf3M/98/
:aie:
comme quoi quand on est focalisé sur la paille, on ne voit pas la poutre