Probleme pour l'upload de video

Signaler
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012
-
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012
-
bonjour tout le monde je poste un message sur le forum car je rencontre un problème pour uploader des vidéos.
Je ne sais pas si c'est un problème d'accolade, en fait lorsque j'essaye d'uploder une vidéo au format .avi, cela recharge la même page mais rien n'est uploader, et il n'y a pas d'insertion ds la base de données.
Pouvez vous m'aidez?

Voici le code de la page index.php?genre=uploadvideo

<?php


//Upload des photos pour la galerie personnelle


$perso=isset($_REQUEST['perso']) ? $_REQUEST['perso'] : null;


//Si c'est le formulaire de photo de galerie perso


if($perso == 'ok'){


    //10 vidéos persos dans la galerie maximum


    $l=$_SESSION['valid'];


       $requ="SELECT COUNT(*) as nbvideogal from video where pseudo='$l'";


       $resu=mysql_query($requ,$cnx);


       $nbvideogal=mysql_fetch_assoc($resu);


  if($nbvideogal['nbvideogal']<10){    


    $poids_max 1024000000; // Poids max du fichier en octets (1Ko 1024 octets) (ici 1000mo max)


    $repertoire = 'videos/'; // Repertoire d'upload


    if (isset($_FILES['fichier']))


   {


    


      // On vérifie le poids de la video (max 1000mo)


   if ($_FILES['fichier']['size'] > $poids_max)


   {


   $erreur = 'Le poid de la vidéo doit être inf&eacute;rieur à ' . $poids_max/1024000 . 'Mo.
';


   }


   


   if ($nbvideogal['nbvideogal']==10){


   //pas plus de 10 videos pour ce login


   echo 'Pas plus de 10 vidéos par utilisateur.
';


   }


   


   


   


   // On vérifie si le répertoire d'upload existe


   elseif (!file_exists($repertoire))


   {


   $erreur = 'Erreur, le dossier d\'upload n\'existe pas.';


   }


   // Si il y a une erreur on l'affiche sinon on peut uploader


   if(isset($erreur))


   {


   echo $erreur;


   }


   else


   {        


   // On définit l'extention du fichier puis on le nomme par le pseudo+time actuel


   $extention = '.avi';


   $nom_fichier = $l.time().$extention;


   // On upload le fichier sur le serveur.


   if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier))


   {


   //SI TRAITEMENT A FAIRE SUR LA VIDEO UPLOADE LE FAIRE ICI (ex compression ou copie etc)


   //On insere dans la base l'objet html avec la bonne valeur


   //on creer la chaine à inserer avec l'objet video et la value avec le chemin de la video uploadee


   $object="
<object>


  


  


  


  


  


  


  


  


  


   </object>
";




   //on insere dans la table VIDEO qui a comme attribut pseudo et video


   $req2="INSERT INTO VIDEO(pseudo,video) VALUES('$l','$object')";


   $res2=mysql_query($req2,$cnx);


   //on indique que la video a bien été uploadee


   echo 'Votre vidéo a bien &eacute;t&eacute; ajout&eacute;e.
';


   }


  //sinon erreur dans l'upload on le specifie aussi


  else


   {


   echo 'La vidéo n\'a pas pu &egrave;tre upload&eacute;e.
';


   }


   }


   }


   


}


}




?>


<form method="POST" action="index.php?genre=uploadvideo&perso=ok" enctype="multipart/form-data">   






</form>

8 réponses

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Salut,

A vu de nez ça devrait fonctionner, même si il y a pas mal de choses qui ne vont pas.

Par contre tite question : c'est bien un serveur perso ou dédié que tu as ?
Parce que si ce n'est pas le cas je doute que tu puisses uploader des fichiers de 1Go de cette manière (ni même un de 50Mo)
En plus ce n'est vraiment pas la méthode appropriée pour transférer des fichiers de cette taille.

Regarde dans ton php.ini la valeur de "upload_max_filesize".

Cordialement,

Kohntark -
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

J'utilise un serveur perso :s, en ft je pense pas qu'un serveur dédié serait la solution la mieux adapté à mes besoins puisque cet upload permettrait a un artiste d'uploader sur le serveur des vidéos mais cela ne servirait que pour 5/6vidéos.
sinon j'ai un peu modifié le code depuis hier soir voila le nouveau :

<?php
ini_set('memory_limit', 1024000000); // en octets
set_time_limit(1200); // en secondes

//Upload desvidéos pour la galerie personnelle
$perso=isset($_REQUEST['perso']) ? $_REQUEST['perso'] : null;
$ext_admise = array ("avi");

//obtention de l'extension
function getextension($fichier) {
$bouts = explode(".", $fichier);
$extension = array_pop($bouts);
$extension = strtoupper ($extension);
return $extension;
}
//getextension ()

//Si c'est le formulaire de vidéos de galerie perso
if($perso == 'ok'){
//10 vidéos persos dans la galerie maximum
$l=$_SESSION['valid'];
$requ="SELECT COUNT(*) as nbvideogal from video where pseudo='$l'";
$resu=mysql_query($requ,$cnx);
$nbvideogal=mysql_fetch_assoc($resu);
  if($nbvideogal['nbvideogal']<10){      $poids_max 1024000000; // Poids max du fichier en octets (1Ko 1024 octets) (ici 1000mo max)
  $repertoire = 'videos/'; // Repertoire d'upload
    if (isset($_FILES['fichier'])){
      // On vérifie le poids de la video (max 1000mo)
      if ($_FILES['fichier']['size'] > $poids_max){
        $erreur = 'Le poid de la vidéo doit être inf&eacute;rieur à ' . $poids_max/1024000 . 'Mo.
';
      }
        // On vérifie si le répertoire d'upload existe
        if (!file_exists($repertoire)){
        $erreur = 'Erreur, le dossier d\'upload n\'existe pas.';
        }
        getextension($fichier);
            if (!in_array ($extension, $ext_admise)){
            $erreur = 'Attention, le fichier que vous venez de sélectionner n\'est pas une vidéo au format valide.';
            }
              //if (!$result){
              //$res_write = fwrite ($logerrorpt, "erreur lors de l'upload : ");
              //switch ($erreur){
              //case 1: // UPLOAD_ERR_INI_SIZE
              //$res_write = fwrite ($logerrorpt, "UPLOAD_ERR_INI_SIZE\r\n");
              //echo "Attention le fichier dépasse la taille autorisée par le serveur
";
              //break;
              //case 2: //UPLOAD_ERR_FORM_SIZE
              //$res_write = fwrite ($logerrorpt, "UPLOAD_ERR_FORM_SIZE\r\n");
              //echo "Attention le fichier dépasse la taille autorisée par le formulaire
";
              //break;
              //case 3: //UPLOAD_ERR_PARTIAL
              //$res_write = fwrite ($logerrorpt, "UPLOAD_ERR_PARTIAL\r\n");
              //echo "Attention, l'upload du fichier a été interrompu
";
              //break;
              //case 4: // UPLOAD_ERR_NO_FILE
              //$res_write = fwrite ($logerrorpt, "UPLOAD_ERR_NO_FILE\r\n");
              //echo "Attention, le fichier envoyé à une taille nulle
";
              //break;
              //}
                // Si il y a une erreur on l'affiche sinon on peut uploader
                if(isset($erreur)){
                echo $erreur;
                }
                    else{       
                    // On définit l'extention du fichier puis on le nomme par le pseudo+time actuel
                    $extention = '.avi';
                    $nom_fichier = $l.time().$extention;
                    // On upload le fichier sur le serveur.
                        if (move_uploaded_file($_FILES['fichier']['tmp_name'], $repertoire.$nom_fichier)){
                        //SI TRAITEMENT A FAIRE SUR LA VIDEO UPLOADE LE FAIRE ICI (ex compression ou copie etc)
                        //On insere dans la base l'objet html avec la bonne valeur
                        //on creer la chaine à inserer avec l'objet video et la value avec le chemin de la video uploadee
                        $object="
<object>
                       
                       
                       
                       
                       
                       
                       
                       
                       
                        </object>
";
                        //on insere dans la table VIDEO qui a comme attribut pseudo et video
                        $req2="INSERT INTO VIDEO(pseudo,video) VALUES('$l','$object')";
                        $res2=mysql_query($req2,$cnx);
                        //on indique que la video a bien été uploadee
                        echo 'Votre vidéo a bien &eacute;t&eacute; ajout&eacute;e.
';
                        }
                            //sinon erreur dans l'upload on le specifie aussi
                            else{
                            echo 'La vidéo n\'a pas pu &ecirc;tre upload&eacute;e.
';
                            }
                    }
        }
  
}
}
?>
Ajoute des vidéos personnelles

<form method="POST" action="index.php?genre=uploadvideo&perso=ok" enctype="multipart/form-data">  

</form>
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
ini_set('memory_limit', 1024000000); // en octets

= > file moi l'adresse de ton serveur que je le fasse planter

set_time_limit(1200); // en secondes
=> 1Go en 20 minutes ... c'est mal barré si tu as une connexion traditionnelle. Imagine 2,3 upload + 1 visualisation en même temps.

Tu ne dis pas si cela fonctionne désormais, mais j'ai déjà la réponse => NON
As tu regardé la valeur de upload_max_filesize dans le php.ini comme je l'indiquai ?
Hormis les nombreuses erreurs qu'il y a dans ton script la méthode que tu emploies ne fonctionnera jamais :
1Go sur le web => même pas la peine d'y penser dans ta configuration et avec ta méthode. Pense au streaming, à la   
compression des videos envoyées, au FTP.

Bon courage,

Kohntark -
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

max_execution_time = 30     ; Maximum execution time of each script, in seconds
max_input_time = 60    ; Maximum amount of time each script may spend parsing request data
memory_limit = 16M      ; Maximum amount of memory a script may consume (16MB)

Quels sont les nombreuses erreurs de mon script?
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Je ne veux pas y mettre de la mauvaise fois mais il y en a des dizaines !!!
Par exemple :$ext_admise array ("avi");> un array pour définir un seul élément ?? => $ext_admise = 'avi';

$extention = '.avi';
$nom_fichier $l.time().$extention;> $nom_fichier = $l.time().'.'.$ext_admise; //inutile de redéfinir une variable alors qu'elle l'est déjà

$req2="INSERT INTO VIDEO(pseudo,video) VALUES('$l','$object')";
=> et si $_SESSION['valid'] n'est pas définie, ça donne quoi ?
=> pourquoi stocker du code HTML dans la base de données ? l'alourdir ? poser des problèmes avec les caractères spéciaux ?

// On vérifie si le répertoire d'upload existe
        if (!file_exists($repertoire)){
        $erreur = 'Erreur, le dossier d\'upload n\'existe pas.';
        }
=> là aussi ça ne sert à rien, le répertoire existe, c'est toi qui l'a créé une fois pour toute, inutile de faire la vérif

etc ... etc ...

Dis moi, la valeur de upload_max_filesize est classée top secret chez toi ou ai je omis de te la demander déjà deux fois ?

Cordialement,

Kohntark -
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

upload_max_filesize = 2M
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
Donc ça ne marchera jamais, il faudrait passer cette valeur à 1Go, mais, comme je te l'ai dit plusieurs fois, ton projet ne fonctionnera jamais correctement de cette manière. Non seulement tu vas finir par planter ton serveur, mais en plus les navigateurs qui vont accéder à ta page.

ini_set('memory_limit', 1024000000); = > tu affectes 1Go de RAM rien que pour PHP, c'est énorme, même dans le cas incertain où tu aurais 20Go de RAM

set_time_limit(1200); // en secondes
=> je répète, ça n'est pas suffisant pour transférer des fichiers de 1Go
upload_max_filesize 2M> cela signifie que la taille maximale des fichiers uploadés est de 2Mo, toi tu souhaites uploader des fichiers de 1Go => pb

Repense ton projet pour qu'il soit viable sur le net. Dans le cas contraire je ne peux plus rien faire pour toi.

Kohntark -
Messages postés
94
Date d'inscription
vendredi 12 septembre 2008
Statut
Membre
Dernière intervention
19 mai 2012

ok merci de ton aide, désolé je code depuis peu en php, il me manque de nombreuses notions