Upload de video dans une base de données

Résolu/Fermé
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 - Modifié le 18 sept. 2018 à 19:41
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 - 19 sept. 2018 à 19:02
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 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 mars 2025 4 741
18 sept. 2018 à 19:44
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 mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
19 sept. 2018 à 16:07
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 38453 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 11 mars 2025 4 741
19 sept. 2018 à 16:13

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 mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
19 sept. 2018 à 16:29
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 mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019
19 sept. 2018 à 16:36
C'est déjà le chemin que tu stockes…
0
persepolis7 Messages postés 58 Date d'inscription mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
19 sept. 2018 à 16:40
Ah je viens de comprendre faut que j'augmente la taille de upload_max_filesize ?
0
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 mercredi 10 janvier 2018 Statut Membre Dernière intervention 16 janvier 2019 1
19 sept. 2018 à 16:37
la valeurs de upload_max_filesize est de 2M
0