Upload fichier dynamique (PHP)
encoreali
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai un problème depuis quelques semaines, j'essaye de faire un formulaire où on upload un fichier avec plusieurs cases( chaque case correspond à un dossier) pour savoir où mettre le fichier.
Puis lorsque l'on clique sur Submit (=Bouton Upload), on est envoyé dans une autre page permettant l'upload.
Le problème est que je n'arrive pas à faire un move_upload_file. je n'arrive pas à comprendre le if (move_uploaded_file( $_FILES["$bases[$value]"]['tmp_name'])). Si quelqu'un peut m'aider!
Merci!
J'ai un problème depuis quelques semaines, j'essaye de faire un formulaire où on upload un fichier avec plusieurs cases( chaque case correspond à un dossier) pour savoir où mettre le fichier.
<?php // <input name="file" type="file" id="file"><br /><br />Cliquez pour télécharger<br /></input> define('DOSSIER', './uploaded_files/paritel/*'); echo count(glob(DOSSIER . '/*', GLOB_ONLYDIR)) . ' sous-dossiers trouvés dans ' . DOSSIER; echo '</br> </br>'; $b=count(glob(DOSSIER . '/*', GLOB_ONLYDIR)); echo "<label for='file'>Le fichier appartient à quel dossier ?</label>"; $dirs = glob("./uploaded_files/*/*/", GLOB_ONLYDIR); $bases= array(); $value=array(); $i=0; foreach($dirs as $dir) { $base = basename($dir); $bases[] = $base; $base = print_r("$bases[$i]",true) ; $value = basename($dir); $values[] = $value; $value = print_r("$values[$i]",true) ; echo '</br>'; echo "<html> </br> </br>"; echo "<form name='checkbox' method='post' action='upload.php'> "; echo "<input type='checkbox' name='base[]' value='$i'>"; echo "<label for='$i'> Mettre sur le dossier $base ? </br> </label>"; //echo "<input type='file' name='file' id='fileToUpload'>"; echo "<input type='submit' value='upload' name='submit[]'>"; //echo "<input type=nom id='' name='$base' value='' placeholder='Nom du fichier'>"; echo '</html>'; //echo ' ' . $base . '<br>'; //echo $base; $i++; } //name='submit[]' //print_r($bases); // enctype='multipart/form-data' LIGNE 38!!! ?> <script> $(document).ready(function(){ $('input:checkbox').click(function(){ $('input:checkbox').not(this).prop('checked', false); }); }); </script>
Puis lorsque l'on clique sur Submit (=Bouton Upload), on est envoyé dans une autre page permettant l'upload.
<?php include "tableau.php"; define('DOSSIER', './uploaded_files/paritel/*'); $b=count(glob(DOSSIER . '/*', GLOB_ONLYDIR)); $i = 0; extract($bases, EXTR_PREFIX_SAME,$base); // $dirs1 = pathinfo($_FILES["file"]['tmp_name']); // print_r($dirs1); $bases[] = $base; $base = print_r("$bases[$i]",true) ; print_r(pathinfo($_FILES["$bases[$value]"]['tmp_name'])); foreach( $_POST['base'] as $key => $value ) { if(isset($_POST['submit'])){ if(isset($_POST['base'])){ //echo("$bases[$value]"); if (file_exists("$bases[$value]")) { echo "Le fichier $bases[$value] existe déjà"; } else{ if (move_uploaded_file( $_FILES["$bases[$value]"]['tmp_name'])){ echo "ok"; } else{ echo "non ok"; } } } else{ echo "cocher la case !"; } } else{ echo "Appuyer sur submit"; } $i++; } ?>
Le problème est que je n'arrive pas à faire un move_upload_file. je n'arrive pas à comprendre le if (move_uploaded_file( $_FILES["$bases[$value]"]['tmp_name'])). Si quelqu'un peut m'aider!
Merci!
EDIT : Ajout des BALISES DE CODE
A voir également:
- Upload fichier dynamique (PHP)
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
Bonjour,
La fonction move_uploaded_file attend deux paramètres.
https://www.php.net/manual/fr/function.move-uploaded-file.php
La fonction move_uploaded_file attend deux paramètres.
https://www.php.net/manual/fr/function.move-uploaded-file.php
$emplacementOuMettreLeFichier = " .. le chemin ou mettre le fichier ..."; if (move_uploaded_file( $_FILES["$bases[$value]"]['tmp_name'] , $emplacementOuMettreLeFichier)){ echo "ok"; }
Bonjour,
Après avoir mis votre code, j'ai comme erreur :
" Notice: Undefined index: erwan in C:\wamp64\www\html\upload.php "
Après avoir mis votre code, j'ai comme erreur :
" Notice: Undefined index: erwan in C:\wamp64\www\html\upload.php "
Le souci vient de ton code
C'est quoi ça :
A noter que tu as, dans le code que tu nous as montré, mis l'input File en commentaires ... donc.. il n'est pas actif sur ton site...
Il manque également le enctype dans ton form
Une fois corrigé, ajoute donc un var_dump de la variable $_FILES au début de ton script histoire de voir ce qu'elle contient...
$_FILES["$bases[$value]"]
C'est quoi ça :
$bases[$value]??
A noter que tu as, dans le code que tu nous as montré, mis l'input File en commentaires ... donc.. il n'est pas actif sur ton site...
Il manque également le enctype dans ton form
enctype="multipart/form-data"
Une fois corrigé, ajoute donc un var_dump de la variable $_FILES au début de ton script histoire de voir ce qu'elle contient...
$bases[$value] est dans une boucle et permet de donner les noms des dossiers (Lié à un autre code dynamique permettant de crée des dossiers). Pour le enctype je l'ai mis juste avant la boucle foreach est-ce bon?
Pour le var_dump( $_FILES["$bases[$value]"] ), j'obtiens C:\wamp64\www\html\upload.php:38:null
Le problème est $bases[$value], mais comment faire pour nommer les fichiers si nous n'avons pas $bases[$value]?
Pour le var_dump( $_FILES["$bases[$value]"] ), j'obtiens C:\wamp64\www\html\upload.php:38:null
Le problème est $bases[$value], mais comment faire pour nommer les fichiers si nous n'avons pas $bases[$value]?
Pour le enctype je l'ai mis juste avant la boucle foreach est-ce bon?
Non.
le enctype... ça se met dans la déclaration du FORM
=> https://www.google.com/search?q=php+enctype%3D%26%2334%3Bmultipart%2Fform-data%26%2334%3B
Pour le var_dump( $_FILES["$bases[$value]"] )
Je t'ai demandé :
var_dump de la variable $_FILES
$_FILES .. TOUT COURT...