Bonjour,
Voici 2 fichiers PHP qui permettent de télécharger un fichier du disque local vers le serveur. J'aimerai que le fichier soit copié dans un dossier du serveur qui reprenne une variable venant de PHP. Hors, je n'arrive pas à transférer cette variable $num dans la fonction AJAX afin de la transiter dans le fichier upload.php
quelqu'un aurait-il une idée ?
merci
voici les 2 fichiers PHP
fichier index160.php ci-dessous qui appelle upload.php :
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8" /> <script> function _(elmt) { return document.getElementById(elmt); } function uploadFichier() { var file = _('file').files[0]; var data = new FormData(); data.append('file', file); var ajax = new XMLHttpRequest(); ajax.upload.addEventListener("progress", progressHandler, false); ajax.addEventListener("load", completeHandler, false); ajax.addEventListener("error", errorHandler, false); ajax.addEventListener("abort", abortHandler, false); ajax.open("POST", "index160/upload.php"); ajax.send(data); } function progressHandler(event) { _('status_bytes').innerHTML = event.loaded + ' octets chargés sur ' + event.total + ' octets'; var pourcentage = (event.loaded / event.total) * 100; _('progressBar').value = Math.round (pourcentage); _('status').innerHTML = Math.round (pourcentage) + '% chargé... patientez'; } function completeHandler(event) { _('status').innerHTML = event.target.responseText; _('progressBar').value = 0; } function errorHandler() { _('status').innerHTML = "L'upload a échoué!"; } function abortHandler() { _('status').innerHTML = "L'upload a été annulé!"; } </script> </head> <body> <h2>Upload fichier dans dossier comme variable</h2> <?php $_POST['num'] = 123456789; $num = $_POST['num']; ?> <h2>Dossier cible souhaité = files/<?php echo $num; ?> </h2> <form method="post" enctype="multipart/form-data" id="form"> <input type="file" multiple id="file" name="file" /></br><br> <input type="button" value="Télécharger le fichier" onclick="uploadFichier()" /></br> <br> <input type="hidden" name="num" value=<?php echo $num; ?> /> <progress id="progressBar" value="0" max="100" style="width:500px"></progress> <input type="hidden" name="num" value="888888888" /> </form> <h2 id="status"></h2> <p id="status_bytes"></p> </body> </html>
et upload.php ci-dessous dans le dossier \index160\
PS : les fichiers téléchargés viennent se copier dans le dossier \index160\files\temp
lorsque le transfert de variable échoue.
j'ai essayé également de passer une variable $_POST via javascript sans réussir ...
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 <html> <meta charset="utf-8" /> <?php function skip_accents( $str, $charset='utf-8' ) { $str = htmlentities( $str, ENT_NOQUOTES, $charset ); $str = preg_replace( '#&([A-za-z])(?:acute|cedil|caron|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str ); $str = preg_replace( '#&([A-za-z]{2})(?:lig);#', '\1', $str ); $str = preg_replace( '#&[^;]+;#', '', $str ); return $str; } // **************** GESTION DU DOSSIER DE DESTINATION ********************** $numdossier = "temp"; if(isset($_GET['num'])) $numdossier = $_GET['num']; if(isset($_POST['num'])) $numdossier = $_POST['num']; $dir = 'files/'.$numdossier; if( is_dir($dir) === false ) mkdir($dir); // *********************** COPIE FICHIER *************************** if (!empty($_FILES)) //Vérifie la présence d'un fichier dans la superglobale $_FILES. { $nomFichier = $_FILES['file']['name']; $nomFichier = skip_accents($nomFichier); $tempRep = $_FILES['file']['tmp_name']; $error = $_FILES['file']['error']; if ($error !=0 || !$tempRep) { echo '<font color=red>Erreur: Le fichier n\'a pas pu être uploadé</font>'; die(); } if(move_uploaded_file($tempRep, $dir.'/'.$nomFichier)) { echo '<font color=blue>Chargement du fichier <font color=brown>'.($nomFichier).'<br>'; echo '<font color=blue>Dossier effectif = <font color=brown>'.$dir.'/'.$nomFichier.'<font color=blue> </font>'; } else { echo '<font color=red>Une erreur est survenue lors de l\'envoi du fichier</font>'; } } ?> </html>
Partager