PHP Upload Vidéos

R0M1 -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis en train de développer un site web d’hébergement de vidéos et pour l'upload de vidéo, je n'y arrive pas.


<?php

session_start();
header( 'content-type: text/html; charset=utf-8' );

$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

?>

<!DOCTYPE html>
<html>
<head>
	<title>Ajouter une vidéo</title>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="styleaddvideo.css">
</head>
<body id='bodyaddvideo'>



<form action="" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="3000000000" />
<input type="file" name="video">
<input name="upload" type="submit" value="Upload " />
</form>
<?php
if(isset($_POST['upload'])){
//$ss=mkdir("videos/",0777);
$uploaddir="videos/";
$filetype=$_FILES['video']['type'];
$filename=$_FILES['video']['name'];
$realpath=$uploaddir.$filename;
if(!empty($filetype))
{
move_uploaded_file($_FILES['video']['tmp_name'],$realpath ) ;
}
}?>




<?php if(isset($msg)){echo $msg;}?>
</body>
</script>
</html>



Mon code fonctionne seulement pour les images mais pour les vidéos, il ecrit "Transfert en cours 100%" mais aucun fichier n'apparait dans mon fichier vidéos/.

-------------------------------------
Je travaille sur PHP en local avec Wampserver64.
J'ai aussi modifié le php.ini ( J'ai mis : post_max_size = 3000M et upload_max_filesize = 3000Mo)
-------------------------------------


Merci.
A voir également:

6 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,

Commence par vérifier le $_FILES error avant de faire ton move

function codeToMessage($code)
    {
        switch ($code) {
            case UPLOAD_ERR_INI_SIZE:
                $message = "The uploaded file exceeds the upload_max_filesize directive in php.ini";
                break;
            case UPLOAD_ERR_FORM_SIZE:
                $message = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form";
                break;
            case UPLOAD_ERR_PARTIAL:
                $message = "The uploaded file was only partially uploaded";
                break;
            case UPLOAD_ERR_NO_FILE:
                $message = "No file was uploaded";
                break;
            case UPLOAD_ERR_NO_TMP_DIR:
                $message = "Missing a temporary folder";
                break;
            case UPLOAD_ERR_CANT_WRITE:
                $message = "Failed to write file to disk";
                break;
            case UPLOAD_ERR_EXTENSION:
                $message = "File upload stopped by extension";
                break;

            default:
                $message = "Unknown upload error";
                break;
        }
        return $message;
    } 


// Outside a loop...
if ($_FILES['video']['error'] == 0) {
    move_uploaded_file($_FILES['video']['tmp_name'],$realpath ) ;
} else {
    $error_message = codeToMessage( $_FILES['video']['error']);
    echo $error_message;
}



Augmente aussi le memory limit et le settimeout dans ton php.ini
( pense bien à vérifier que les valeurs sont bien prises en compte après avoir redémarré ton apache bien entendu... en utilisant un phpinfo() )




0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
ce même code fonctionne bien pour des images, ou bien un autre code que tu ne nous montres pas fonctionne bien?
je suggère de tester le résultat de move_uploaded_file.

je vois aussi que tu as beaucoup de if sans else: ne devrais-tu pas afficher quelque chose en cas d'erreur et quand tout se passe bien?
0
R0M1
 
Bonjour,

J'ai augmenté le "memory_limit" (1To je pense que c'est bon) mais je n'ai pas trouver de set timeout :( et cela ne fonctionne pas, ça fait un chargement et ca n'affiche aucune erreur mais aucun fichier n'est dans mon dossier "videos/".

Merci
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Pardon, set time limite
https://www.php.net/manual/fr/function.set-time-limit.php

Voici les 4 variables à paramétrer dans ton apache
    upload_max_filesize – The maximum allowed upload file size.
    post_max_size – The maximum allowed POST data size.
    max_input_time – Maximum allowed input time.
    max_execution_time – The maximum allowed time the scripts are allowed to run.


NB: Memory_limit .. c'est en rapport avec la "RAM" utilisable par ton php... je doute que tu aies 1To ....


Et puis :
Et as tu ajouté le code que je t'ai donné ?
As tu ajouté un test sur le move comme indiqué par Yg_be ?
As tu essayé avec des vidéos de plus petite taille pour voir ?
As tu redémarré ton apache ?
As tu fais un phpinfo ? qu'est-ce qu'il t'affiche ?
0
R0M1
 
Bonjour,

De un, avec le code que jordane45 m'as donné, aucune erreur n'est affichée.
De deux, le test pour le move je ne sais pas comment y faire.
De trois, Oui j'ai redémarrer mon appache.
Et de quatre le phpinfo(); affiche trop de ligne pour que je vous montre et en plus c'est ma configuration serveur, cela pourrait être utiliser à des fins de piratage !
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
De 1 ..ok, donc il semble que $_FILES ne contienne pas d'erreur
De 2 , tu sais faire un IF ? ben c'est avec ça qu'il faut le faire
De 3, ok
De 4 , en local.. il y a peu de chance que ça serve à quiconque pour te pirater quoi que ce soit... mais de toutes façons, on ne veut pas tout le contenu.. juste que tu vérifies si tes valeurs ( voir les 4 variables que je t'ai indiqué dans mon précédent message ) aient bien les valeurs désirées...
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
pour éviter toute confusion, il est utile que tu montres ton code complet, incluant le code suggéré par Jordane.

un exemple de test pour le move:
if (move_uploaded_file($_FILES['video']['tmp_name'],$realpath )) 
        echo "ok";
 else 
        echo "oups, petit soucis avec le  move";
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
R0M1
 
J'ai essayer avec le code que yg_be ma donné mais il n'affiche rien, pas de "ok" ni de "oups, petit soucis avec le move".
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
pour éviter toute confusion, il est utile que tu montres ton code complet, incluant le code suggéré par Jordane.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Et avant de faire le move,
tester avant le is_uploaded
https://www.php.net/manual/fr/function.is-uploaded-file.php
if (is_uploaded_file($_FILES['video']['tmp_name'])) {
   echo "<br>Fichier ". $_FILES['video']['name'] ." uploadé avec succès.\n";
    if (move_uploaded_file($_FILES['video']['tmp_name'],$realpath )){
      echo "<br>Fichier déplacé avec succès";
   }else{
     echo " <br> Erreur lors du déplacement du fichier";
  }

} else {
   echo "<br>Erreur lors du téléchargement du fichier : " .$_FILES['video']['tmp_name'] ;
}

0