Upload de video dans une base de données

Résolu
persepolis7 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -  
persepolis7 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je n'arrive pas à uploader des videos dans ma base de données.

Voici mon code :



<?php

session_start();

    if(isset($_SESSION['Id'])){

            if( !empty($_POST['product_name']) ){


            if(!empty($_FILES)){

            $file_name = $_FILES['upload_video']['name']; 
            $file_type = $_FILES['upload_video']['type'];
            $file_tmp_name = $_FILES['upload_video']['tmp_name'];
            $file_extension = strrchr($file_name, "."); 
            $file_destination = '../video/'.$file_name;
        
            $valid_extensions = array( '.AVI', '.avi', '.MOV', '.mov', '.MPG', '.mpg', '.MP3', '.mp3', '.MP4', '.mp4' );
        
            if( in_array( $file_extension, $valid_extensions )){
        
                if(move_uploaded_file( $file_tmp_name, $file_destination )){ 

                $create_product = $database->prepare( "INSERT INTO create_product(IdUser, productName,  videos) 
                                                    VALUES(?, ?, ?)" );

                $create_product->execute(array( $_SESSION['Id'], $_POST['product_name'], $file_destination ));
                              
                                 echo "video has been uploaded"; 

                }else{
                                 echo "video hasnt been uploaded";
                }
        
                    
            }else{

                                 echo "valid extensions '.AVI', '.avi', '.MOV', '.mov', '.MPG', '.mpg', '.MP3', '.mp3', '.MP4', '.mp4' ";

            }
        
            echo 'Nom : '.$file_name;
            echo 'Extension : '.$file_extension;
            var_dump($_FILES); 
        }

                   
            }else{

                                echo "empty product name";

            }

                    
        }else{

                               echo "id doesnt exist";

        }

include "../templates/create_product.phtml";





Voici les erreurs :
video hasnt been uploaded

Nom : video_2.mp4
Extension : .mp4

array (size=1)
  'upload_video' => 
    array (size=5)
      'name' => string 'video_2.mp4' (length=11)
      'type' => string '' (length=0)
      'tmp_name' => string '' (length=0)
      'error' => int 1
      'size' => int 0


EDIT : correction des balises de code (jordane)

2 réponses

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

Primo.. ton souci concerne le PHP et non la BDD.
Je déplace donc ta question dans le bon forum.

Ensuite, le message qui apparait est lié au if
if(move_uploaded_file( $file_tmp_name, $file_destination )){ 

Ce qui indique qu'il n'a pas pu uploader le fichier sur le serveur...

Plusieurs raisons possibles :
Le répertoire de destination n'existe pas ou n'a pas les droits suffisants
Ou.. tes variables
; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

ne sont pas assez élevées par rapport à la taille de ta video.

Tu peux aussi modifier le time_limit via les variables

max_execution_time
max_input_time


Toutes ces variables sont modifiables dans ton PHP.ini
Une fois la modification effectuée, il te faut redémarrer apache.


1
persepolis7 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour,

mes videos ont une taille inférieur à 10Mo et je suis en longblob pour le champs videos dans ma bdd...

Y'aurait-il une autre manière de permettre un upload de videos ?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

mes videos ont une taille inférieur à 10Mo et je suis en longblob pour le champs videos dans ma bdd...

Je répète .... le message d'erreur provient de ton IF moveupload ...donc rien à voir avec ta bdd.

De plus... on n'évite de stocker des fichiers directement dans la bdd... on n'y stocke que le chemin vers le fichier.

Mais bon.. ton souci se trouve bien au niveau de l'upload du fichier sur le serveur... donc relis (et applique) ce que je t'ai indiqué dans ma précédente réponse...
0
persepolis7 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Bon tant pis je vais plutôt stoker le chemin alors.. du coup j'enregistre ça '../video/' à la place de '../video/'.$file_name ?
0
Utilisateur anonyme > persepolis7 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention  
 
C'est déjà le chemin que tu stockes…
0
persepolis7 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
Ah je viens de comprendre faut que j'augmente la taille de upload_max_filesize ?
0
Utilisateur anonyme
 
Bonjour

'error' => int 1
indique clairement que ton fichier est trop long :
https://www.php.net/manual/fr/features.file-upload.errors.php
Quelle est la valeur de upload_max_filesize dans ton fichier php.ini ?
Si tu ne sais pas, crée un script qui contient seulement
<?php
phpinfo();

et tu verras plein de choses sur ta configuration.

D'autre part :
je suis en longblob pour le champs videos dans ma bdd
C'est un très mauvais choix, car contrairement à ce que tu sembles croire, tu n'enregistres pas tes vidéos dans ta base, seulement les noms de fichiers. Les vidéos elle-mêmes, tu les enregistres dans le dossier ../video/ comme indiqué par
$file_destination = '../video/'.$file_name;
. Le champ videos devrait donc être un champ texte
1
persepolis7 Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   1
 
la valeurs de upload_max_filesize est de 2M
0