Upload vidéo

Eléphant du PHP | 287 Messages

27 mai 2009, 16:42

Bonjour,
Voici mon code pour uploader une vidéo, mais j'ai une erreur ligne 39, si quelqu'un peut m'aider
<?php
//On commence par récupérer les champs 
if(isset($_POST['pays']))      $id_pays=$_POST['pays'];
else      $id_pays="";

if(isset($_POST['critere']))      $id_critere=$_POST['critere'];
else      $id_critere="";

if(isset($_POST['titre_video']))      $titre_video=$_POST['titre_video'];
else      $titre_video="";

if(isset($_POST['video']))      $video=$_POST['video'];
else      $video="";

if(isset($_POST['realisateur']))      $realisateur=$_POST['realisateur'];
else      $realisateur="";

if(isset($_POST['web']))      $web=$_POST['web'];
else      $web="";

if(isset($_POST['mail']))      $mail=$_POST['mail'];
else      $mail="";

#Enregistrement de la date et heure
$date  = date("ymd");
$heure = date("His");

#Ajout de la date et l'heure au nom de fichier
$nom= $date."-".$heure;
echo "Référence de votre vidéo : $nom";

if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = '../upload_video/'; // dossier où sera déplacé le fichier

$tmp_file = $_FILES['video']['tmp_name'];

//on vérifie maintenant l'extension
    $type_file = $_FILES['fichier']['type'];

    if( !strstr($type_file, 'flv') && !strstr($type_file, 'mov') && !strstr($type_file, 'avi') )
    {
        exit("L'extension de votre fichier n'est pas accepté !");
    }
	
	$nom .= ".".pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);

//On copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $nom) )
    {
    exit("Impossible de copier le fichier dans $content_dir");
    }

	echo 'Votre vidéo a été transférée avec succès';

 	
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error()); 
mysql_select_db('voyagez_vol',$db)  or die('Erreur de selection '.mysql_error());
  
$sql = "INSERT INTO video (id_video,id_pays,id_critere,video,titre_video,realisateur,web,mail) VALUES ('".mysql_real_escape_string('')."','".mysql_real_escape_string($id_pays)."','".mysql_real_escape_string($id_critere)."','".mysql_real_escape_string($video)."','".mysql_real_escape_string($titre_video)."','".mysql_real_escape_string($realisateur)."','".mysql_real_escape_string($web)."','".mysql_real_escape_string($mail)."')"; 
      
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

mysql_close();
}
?>

Eléphant du PHP | 94 Messages

27 mai 2009, 16:57

Poste nous l'erreur s'il te plaît.
Apparemment l'erreur vient de cette ligne :

Code : Tout sélectionner

$type_file = $_FILES['fichier']['type'];
Tu appelles dans la ligne juste avant les infos du fichier uploadé dans la variable $_FILES['video'].
Sur cette ligne tu appelles la variable $_FILES['fichier'].
Tu as plusieurs champs de fichiers dans ton formulaire ?

Sinon, il se peut qu'une ne soit pas définie et pose problème.
Poste aussi ton formulaire s'il te plaît.

Eléphant du PHP | 287 Messages

27 mai 2009, 17:18

J'ai corrigé ma ligne 39
Je n'a plus de message d'erreur, mais il ne prend pas l'extension.
Voici mon formulaire :
<form method="post" enctype="multipart/form-data" action="upload_video.php">
Choisissez un Pays :
      <select name="pays">
          <option value="1"> Afghanistan</option>
          <option value="2"> Afrique du Sud</option>
          <option value="3"> Albanie</option>
          <option value="4"> Algérie</option> 
        </select>
Fichier à transf&eacute;rer : <input type="file" name="video" size="30">
Titre : <input type="text" name="titre_video" size="40" value="" maxlength="70">
Choisissez un Crit&egrave;re :
<select name="critere">
        <option value="1">Ville</option>
        <option value="2">Mer</option>
        <option value="3">Montagne</option>
        <option value="4">Nature</option>
        <option value="5">Monuments</option>
        <option value="6">Panoramique</option>
        <option value="7">Aéroport - Héliport</option>
        <option value="8">Animaux</option>
        <option value="9">Sport</option>
        <option value="15">Parcs</option>
      </select>
R&eacute;alisateur de la vid&eacute;o  : <input type="text" name="realisateur" size="40" value="" maxlength="70">
Site web : <input type="text" name="web" size="40" value="" maxlength="100">
Mail : <input type="text" name="mail" size="40" value="" maxlength="100">
<input type="submit" name="upload" value="Téléchargez votre vidéo">
</form>
Ma page upload, corrigée :
<?php
//On commence par récupérer les champs 
if(isset($_POST['pays']))      $id_pays=$_POST['pays'];
else      $id_pays="";

if(isset($_POST['critere']))      $id_critere=$_POST['critere'];
else      $id_critere="";

if(isset($_POST['titre_video']))      $titre_video=$_POST['titre_video'];
else      $titre_video="";

if(isset($_POST['video']))      $video=$_POST['video'];
else      $video="";

if(isset($_POST['realisateur']))      $realisateur=$_POST['realisateur'];
else      $realisateur="";

if(isset($_POST['web']))      $web=$_POST['web'];
else      $web="";

if(isset($_POST['mail']))      $mail=$_POST['mail'];
else      $mail="";

#Enregistrement de la date et heure
$date  = date("ymd");
$heure = date("His");

#Ajout de la date et l'heure au nom de fichier
$nom= $date."-".$heure;
echo "Référence de votre vidéo : $nom";

if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = '../upload_video/'; // dossier où sera déplacé le fichier

$tmp_file = $_FILES['video']['tmp_name'];

//on vérifie maintenant l'extension
    $type_file = $_FILES['video']['type'];

    if( !strstr($type_file, 'flv') && !strstr($type_file, 'mov') && !strstr($type_file, 'avi') )
    {
        exit("L'extension de votre fichier n'est pas accepté !");
    }
	
	$nom .= ".".pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION);

//On copie le fichier dans le dossier de destination
    $name_file = $_FILES['fichier']['name'];

    if( !move_uploaded_file($tmp_file, $content_dir . $nom) )
    {
    exit("Impossible de copier le fichier dans $content_dir");
    }

	echo 'Votre vidéo a été transférée avec succès';

 	
$db = mysql_connect('localhost', 'root', '')  or die('Erreur de connexion '.mysql_error()); 
mysql_select_db('voyagez_vol',$db)  or die('Erreur de selection '.mysql_error());
  
$sql = "INSERT INTO video (id_video,id_pays,id_critere,video,titre_video,realisateur,web,mail) VALUES ('".mysql_real_escape_string('')."','".mysql_real_escape_string($id_pays)."','".mysql_real_escape_string($id_critere)."','".mysql_real_escape_string($video)."','".mysql_real_escape_string($titre_video)."','".mysql_real_escape_string($realisateur)."','".mysql_real_escape_string($web)."','".mysql_real_escape_string($mail)."')"; 
      
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

mysql_close();
}
?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mai 2009, 17:42

Ne pas confondre "extension du fichier" et "type du fichier".

Affiche ta variable $type_file puisque c'est elle qui semble te poser problème, tu verras pourquoi php considère qu'elle n'appartient à aucune des extension celle que tu spécifies :)

(de mémoire, le type mime d'un fichier avi par exemple, est video/msvideo)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 287 Messages

27 mai 2009, 17:50

Bonjour,
Je vais peut-être sembler ridicule, mais comment afficher la variable $type_file

Eléphant du PHP | 94 Messages

27 mai 2009, 18:06

Grâce à la fonction echo.
Si tu ne sais pas ça, ça va être difficile de t'aider.

Eléphant du PHP | 287 Messages

27 mai 2009, 18:12

Si je connais echo !!!
if( !strstr($type_file, 'flv') && !strstr($type_file, 'mov') && !strstr($type_file, 'avi') )
{
exit("L'extension de votre fichier n'est pas acceptée : $type_file");
}

Mais rien qui s'affiche concernant type_file

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mai 2009, 18:31

Tu veux dire que tu as juste le message : "L'extension de votre fichier n'est pas acceptée : " ??

Dans ce cas, c'est que ta variable $type_file est vide... et du coup, c'est normal qu'il n'autorise pas l'upload. Vérifies ce que contient la variable $_FILES['video']['type'].

Vérifies également les infos du tableau $_FILES['video'] avec un
print_r($_FILES['video']);
par exemple...

Ca permettra peut être d'y voir plus clair en cas d'erreur lors de l'upload :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 287 Messages

27 mai 2009, 19:02

if( !strstr($type_file, 'flv') && !strstr($type_file, 'mov') && !strstr($type_file, 'avi') )
    {
        exit("L'extension de votre fichier n'est pas acceptée : $type_file");
		print_r($_FILES['video']); 
    }
J'ai tjs rien

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mai 2009, 19:08

Ben vu que le exit() va arrêter l'exécution du script php, si tu mets le print_r() après, il ne te l'affichera vraissemblablement pas ;)

Mets le au niveau du "$type_file = $_FILES['video']['type'];" pour être tranquile :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 287 Messages

27 mai 2009, 19:31

Voilà le message :
Référence de votre vidéo : 090527-192953Array ( [name] => casino_chatel_guyon_01.mov [type] => [tmp_name] => [error] => 1 [size] => 0 ) L'extension de votre fichier n'est pas acceptée :
Quelqu'un sait ce que signifie ce message ?