Page 1 sur 1

Soucis avec un upload de fichier

Posté : 30 juil. 2007, 12:00
par dunbar
Bonjour,

J'ai créer un formulaire qui me permet de placer des vidéo sur mon serveur, mais je me retrouve avec une erreur que je ne comprend pas :oops:
Warning: move_uploaded_file(modules/video/upload_videos/Windows xp/1185789387sfc.flv) [function.move-uploaded-file]: failed to open stream: No such file or directory in E:\wamp\www\nouveausite\V1_0\modules\video\page2.php on line 100

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'E:/wamp/tmp\php84.tmp' to 'modules/video/upload_videos/Windows xp/1185789387sfc.flv' in E:\wamp\www\nouveausite\V1_0\modules\video\page2.php on line 100
Mon code :
function formatFileName($aFileName, $aMaxLength = 50) {
     $aFileName = strToLower(subStr($aFileName, 0, $aMaxLength));
     $aFileName = ereg_replace('[^a-zA-Z0-9,._\+\()\-]', '_', $aFileName);

     return $aFileName;
   } // end of du traitement pour le nom du fichier

//===========================================================================================//


   $dossier =  $_POST['dossier'].'/';

   //$destination_dir = '/var/www/html/upload';  //---Serveur----//
   $destination_dir = 'modules/video/upload_videos/';  //***Local****///
   // taille maximale en octets du fichier à uploader
   $file_max_size = 100000000;
   $dossier_final = $destination_dir.$dossier;
   // extensions de fichiers autorisées
   $authorized_extensions = array('jpg', 'gif', 'flv', 'wmv', 'avi');


//================================================================================================//




   /* TRAITEMENT PRINCIPAL
    */

   // vérifie l'existence du répertoire de destination
   if (!is_dir($destination_dir)) {
     echo 'Veuillez indiquer un répertoire destination correct !';
     die();
   }

   // vérifie que répertoire de destination a des droits en écriture
   if (!is_writeable($destination_dir)) {
     echo 'Veuillez spécifier des droits en écriture pour le répertoire destination !';
     die();
   }

   // réception du formulaire
   if (isSet($_POST['submitFile'])) {

     // vérifie qu'un fichier a bien été soumis
     if (isSet($_FILES) && is_array($_FILES)) {

       // pas d'erreur lors de l'upload
       if ($_FILES['aFile']['error'] == UPLOAD_ERR_OK) {

         // vérifie la taille en octets
         if ($_FILES['aFile']['size'] <= $file_max_size) {

           // vérifie l'extension du fichier recu
           // il est aussi possible (et sans doute mieux) de se baser sur $_FILES['aFile']['type']
           // qui retourne le type MIME correspondant (par exemple: image/pjpeg)
           $lastPos = strRChr($_FILES['aFile']['name'], ".");
           if ($lastPos !== false && in_array(strToLower(subStr($lastPos, 1)), $authorized_extensions)) {

             // définit un nom de fichier destination unique à partir du nom du fichier original formaté
             $destination_file = time().formatFileName($_FILES['aFile']['name']);

             // déplace le fichier uploadé du répertoire temporaire
             // vers les répertoire/fichier destination spécifiés
             if (move_uploaded_file($_FILES['aFile']['tmp_name'],
                                         $destination_dir.$dossier.$destination_file)) {
               echo 'Fichier valide et upload&eacute; correctement.';
             } else { // error sur move_uploaded_file
               echo 'Le fichier n\'a pas été télécharger correctement !';
             }
           } else { // pas d'extension ou mauvaise extension
             echo 'Mauvaise extension !';
           }
         } else { // Taille maximale dépassée
           echo 'Fichier trop volumineux !';
         }
       } else { // Erreur lors de l'upload
         switch ($_FILES['aFile']['error']){
           case UPLOAD_ERR_INI_SIZE:
              echo 'Le fichier dépasse la valeur sp&eacute;cifi&eacute;e
                       pour upload_max_filesize dans php.ini.';
              break;
           case UPLOAD_ERR_FORM_SIZE:
              echo 'Le fichier dépasse la valeur sp&eacute;cifi&eacute;e
                       pour MAX_FILE_SIZE dans le formulaire d\'upload.';
              break;
           case UPLOAD_ERR_PARTIAL:
              echo 'Le fichier n\'a été que partiellement télécharger';
              break;
           default:
              echo 'Aucun fichier n\'a été télécharger;.';
         } // switch
       }
     } else { // aucun fichier reçu
       echo 'Pas de fichier recu';
     }
   } // fin de réception de formulaire
Et ici la ligne qui pose problème :
if (move_uploaded_file($_FILES['aFile']['tmp_name'],
                                         $destination_dir.$dossier.$destination_file)) {
Si quelqu'un pouvait me mettre sur une piste :?:

D'avance merci

Posté : 30 juil. 2007, 13:55
par Ryle
Il ne peut déplacer le fichier car il ne trouve pas le dossier de destination. Tu travailles dans le dossier "E:\wamp\www\nouveausite\V1_0\modules\video\" d'après le message d'erreur, et tu lui demande à partir de ce dossier, de copier le fichier dans "modules/video/upload_videos/Windows xp/1185789387sfc.flv", soit :
"E:\wamp\www\nouveausite\V1_0\modules\video\modules\video\upload_videos\Windows xp\1185789387sfc.flv"

C'est donc normal qu'il n'y parvienne pas... donne lui juste le chemin "upload_videos\Windows xp\" pour partir du dossier ou s'exécute le script, ou remonte de deux dossier si tu veux conserver le chemin complet : "../../modules/video/upload_videos/Windows xp/" ... bref, ajuste l'emplacement du répertoire à partir du script courrant :)

Posté : 30 juil. 2007, 14:03
par dunbar
Salut,

Merci pour cette réponse mais j'avais déjà essayer et cela ne fonctionne pas mieux :(
Le problème apparament, est que je dois créer les dossier, dunbar_test, Windows xp, etc....
Comment je pourrais lui demander (poliment) de créer un dossier dans le dossier (upload_videos)
Il devrais créer le dossier si celui-ci n'existe pas le nom du dossier provient de la $variable ($dossier).


D'avance merci

Posté : 30 juil. 2007, 14:07
par Ryle
Tu testes $destination_dir pour vérifier s'il existe, mais c'est une chemin que tu as toi même indiqué en dur dans le code... c'est surtout $dossier_final qu'il faudrait tester... et à mon avis, ton dossier video/ ne contient pas de dossier "upload_videos" ou alors c'est ce dernier qui ne contient pas "dunbar_test" :)

Peut être te faut il faire quelques mkdir() pour créer dynamiquement les dossiers nécessaires ?

Posté : 30 juil. 2007, 14:09
par dunbar
Tu testes $destination_dir pour vérifier s'il existe, mais c'est une chemin que tu as toi même indiqué en dur dans le code... c'est surtout $dossier_final qu'il faudrait tester... et à mon avis, ton dossier video/ ne contient pas de dossier "upload_videos" ou alors c'est ce dernier qui ne contient pas "dunbar_test" :)

Peut être te faut il faire quelques mkdir() pour créer dynamiquement les dossiers nécessaires ?
Oui exactement comme quoi tu est malin finalement :wink: c'étais exactement l'erreur le dossier dunbar_test n'existait pas

Posté : 30 juil. 2007, 14:14
par Ryle
Oui exactement comme quoi tu est malin finalement :wink:
Chais pas comment je dois le prendre...... :-s ;)

Ps : non albat... pas de commentaire ! :langue:
Pps : non, les autres non plus... pas de commentaire ! ;)

Posté : 30 juil. 2007, 14:15
par dunbar
Oui exactement comme quoi tu est malin finalement :wink:
Chais pas comment je dois le prendre...... :-s ;)

Ps : non albat... pas de commentaire ! :langue:
Pps : non, les autres non plus... pas de commentaire ! ;)
Bien rassure toi.
J'essaye de crér le dossier correspondant au nom de ma nouvelle section mais j'ai une erreur :!:
$ajsection = mysql_real_escape_string($_POST['ajout_section']);

                   reqmysql('INSERT INTO `dunbar_section` (`id`, `section`) VALUES ("", "'.$ajsection.'");')
                   or die ('<br /><center>Une erreur est survenue !</center>') ;
                   echo '<img src="modules/video/images/valider.png" alt="valider" />&nbsp;&nbsp;Votre requête SQL a été exécutée avec succès ';

                   //Création du dossier dans Upload_videos//
                   mkdir ('upload_videos/'.$ajsection, 0777);
et mon erreur :
Warning: mkdir() [function.mkdir]: No such file or directory in E:\wamp\www\nouveausite\V1_0\modules\video\ajout_section.php on line 33
Le but est de créer un dossier nommé par la $variable -->$ajsection dans le dossier upload_videos

Il n'accepte pas le chemin pourquoi :?:

D'avance merci