PHP Upload Vidéos

Fermé
R0M1 - 4 août 2020 à 11:22
yg_be Messages postés 23491 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 mars 2025 - 4 août 2020 à 21:07
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 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
Modifié le 4 août 2020 à 11:34
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 23491 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 mars 2025 Ambassadeur 1 570
Modifié le 4 août 2020 à 11:38
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
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 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
4 août 2020 à 13:00
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
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 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
4 août 2020 à 18:09
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 23491 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 mars 2025 1 570
4 août 2020 à 18:16
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
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 23491 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 mars 2025 1 570
4 août 2020 à 21:07
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 38454 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 22 mars 2025 4 740
4 août 2020 à 18:55
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