Page 1 sur 2
upload une vidéo en php
Posté : 03 juin 2013, 19:35
par miiidooo19
Bonjour à tous le monde,
je veux faire un script pour uploader une vidéo. J'ai récupérer mon code pour uploader une image donc j'ai changé les extension biensur ^^
et au lieu de contrôler la largeur et hauteur de l'image j'aimerai contrôler la taille de la vidéo (ne dépasse pas 30s ) est ce que c'est possible ?
Re: upload une vidéo en php
Posté : 03 juin 2013, 21:13
par miiidooo19
voici le script que j'utilise pour les photos est ça fonction très bien (que pour les jpg parceque a la base ce script je le veux pour des vidèo)
par contre pour les video ça ne fonction pas, ce qui est bizard c'est qu'il rentre pas dans ma condition if(isset($_POST['Upload'])) (dans le cas d'une video ça m'affiche le echo 'noooooooo' tt en bas ) alors que si c'est une image il rentre bien et la photo est bien uploader :s
<form action="" method="POST" enctype="multipart/form-data">
Video file directory path: <input type="file" name="video"><br/>
<input type="submit" name="Upload" value="Upload">
</form>
<?php
//This function reads the extension of the file to ensure that it is an video file
function getExtension($str) {
$i = strrpos($str,".");
if (!$i)
return "";
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
//This variable handles an error and won't upload the file if there is a problem with it
$errors=0;
//checks if the form has been submitted
if(isset($_POST['Upload']))
{
//récuperer le nom du fichier
$file = $_FILES['video']['name'];
print_r($_FILES);
//si c'est pas vide
if ($file)
{
$video_filename = stripslashes($file); // maVideo.avi
$video_extension = getExtension($video_filename); // Avi
//vérification de l'extension
$extension_valide = array('mpeg','avi','jpg','mp4','mov');
if (!in_array(strtolower($video_extension), $extension_valide)) // faux
{
echo '<h1>Unknown extension!</h1>';
$errors=1;
}
else // bon
{
//récupérer la size de la video
$video_size= filesize($_FILES['video']['tmp_name']);
//compare the size with the maxim size we defined and print error if bigger
if ($video_size > 110000000)
{
echo '<h1>You have exceeded the size limit!</h1>';
$errors=1;
}
//give the video a unique name in case a video already exists with the name on the server
$video_name =time().'.'.$video_extension;
//assign a folder to save the video to on your server
$newname="videos/".$video_name;
//verify that the video has been loaded
if ($errors == 0){
if (move_uploaded_file($_FILES['video']['tmp_name'], $newname) == 1)
echo "<h1>File Uploaded Successfully! Try again!</h1>";
else
echo "erreur lors de téléchargement";
}
}
}
}else
echo 'noooooooooooooooo';
Re: upload une vidéo en php
Posté : 03 juin 2013, 23:27
par moogli
salut,
ajoute un var_dump($_POST); avec le message histoire de voir un peu mieux la chose.
Attention en général vidéo égale gros fichier = tu dépasse la taille max fichier (à vérifier sur un phpinfo()

)
@+
Re: upload une vidéo en php
Posté : 03 juin 2013, 23:56
par miiidooo19
salut,
ajoute un var_dump($_POST); avec le message histoire de voir un peu mieux la chose.
pour
echo var_dump($_POST);
ça donne
array
empty
Attention en général vidéo égale gros fichier = tu dépasse la taille max fichier (à vérifier sur un phpinfo()

)
@+
j'ai bien mis dans php.ini upload_max_filesize = 110M et dans mon code j'ai mis la taille max à 110000000 = 110Mo
Re: upload une vidéo en php
Posté : 04 juin 2013, 09:23
par moogli
pas besoin de echo avec var_dump (cf la doc).
ton tableau $_POST est vide, donc, a priori il n'y a pas de soumission du formulaire.
Ce qui est forcément vrai au premier affichage du formulaire vu que tu n'a pas cliqué sur le bouton submit.
par contre lorsque tu tu clique dessus ça doit aller.
dans ce cas le else est à évité
pour ce qui est du du champs caché indiquant la taille max, c'est du flan vu que c'est coté client tu ne peux pas en tenir compte.
et de toute façon si le fichier dépasse les limites de php tu ne pourra pas l'utiliser.
pour if ($file), c'est inutile tu déclare la variable au dessus et abuse du transtypage.
tu devrais plutot tester que $_FILES['video']['error'] existe et est égale à zéro (ou à la constante UPLOAD_ERR_OK).
@+
Re: upload une vidéo en php
Posté : 04 juin 2013, 13:02
par miiidooo19
pas besoin de echo avec var_dump (cf la doc).
ton tableau $_POST est vide, donc, a priori il n'y a pas de soumission du formulaire.
Ce qui est forcément vrai au premier affichage du formulaire vu que tu n'a pas cliqué sur le bouton submit.
par contre lorsque tu tu clique dessus ça doit aller.
mais si quand je valide le formulaire avec une vidéo que le var_dump($_POST) = array empty
par contre avec une photo j'ai array
'Upload' => string 'Upload' (length=6)
PS la video fait 60 Mo et dans mon fichier php.ini j'ai mis le max a 100M donc
pour ce qui est du du champs caché indiquant la taille max, c'est du flan vu que c'est coté client tu ne peux pas en tenir compte.
et de toute façon si le fichier dépasse les limites de php tu ne pourra pas l'utiliser.
quel champs caché ? je n'ai utilisé aucun hidden
pour if ($file), c'est inutile tu déclare la variable au dessus et abuse du transtypage.
tu devrais plutot tester que $_FILES['video']['error'] existe et est égale à zéro (ou à la constante UPLOAD_ERR_OK).
@+
Oui c'est vrai
Re: upload une vidéo en php
Posté : 04 juin 2013, 14:32
par moogli
pour ce qui est du travail sur la vidéo tu peux te tourner vers
http://ffmpeg-php.sourceforge.net/. (seulement si tu a un dédié, il y a peux de chance que cela soit rependus sur du mutualisé).
@+
Re: upload une vidéo en php
Posté : 04 juin 2013, 15:14
par miiidooo19
pour ce qui est du travail sur la vidéo tu peux te tourner vers
http://ffmpeg-php.sourceforge.net/. (seulement si tu a un dédié, il y a peux de chance que cela soit rependus sur du mutualisé).
@+
je suis pas en dédié malheureusement ..
Re: upload une vidéo en php
Posté : 04 juin 2013, 17:42
par moogli
pas de bol
Regarde quand même si ton hébergeur propose quelque chose.
@+
Re: upload une vidéo en php
Posté : 04 juin 2013, 23:07
par AB
Si la configuration serveur post_max_size est dépassée alors les superglobales $_POST et $_FILES seront vides. Et si tu es sur un mutualisé il est probable que le serveur ne tienne pas compte de tes indications avec php.ini, et il y a fort à parier que cela ne fonctionnera pas mieux en essayant depuis un .htaccess.
Pour gérer les erreurs il y a cette
classe d'upload qui t'indiquera clairement les erreurs et si tu utilise l'exemple avec la barre de progression il n'y aura pas besoin d'attendre 100 plombes avant de savoir que le fichier est trop gros. Mais bon cela gère l'erreur mais ne te donne pas pour autant une solution et il n'y en a pas avec php tant que tu ne peux pas configurer ton serveur.
Re: upload une vidéo en php
Posté : 11 juin 2013, 22:13
par miiidooo19
Merci pour les liens AB ta classe m'as beaucoup aidée
maintenant mon upload fonction parfaitement en local sauf que quand j'ai mis mon projet chez mon hébergeur ça fonction plus, en fait le problème viens de la valeur des deux variable de serveur upload_max_filesize et post_max_size et je veux savoir comment faire pour les modifier ? y a moyen de le faire moi même dans mon code ? si oui ou le mettre exactement ? ou bien si mon hébergeur qu'il faut que je contact pour le modifier ?
Merci d'avance
Re: upload une vidéo en php
Posté : 12 juin 2013, 16:19
par AB
Comme déjà dit, pour modifier ces valeurs, Il faut pouvoir modifier la configuration du serveur (et cela n'a rien à voir avec le code de l'upload lui-même).
Cela se fait soit avec
ini_set, soit par l'intermédiaire un fichier .htaccess, soit dans le php.ini, mais il est très peu probable que ce soit possible sur un serveur mutualisé. Demande à ton hébergeur la marche à suivre.
Re: upload une vidéo en php
Posté : 12 juin 2013, 18:12
par miiidooo19
Comme déjà dit, pour modifier ces valeurs, Il faut pouvoir modifier la configuration du serveur (et cela n'a rien à voir avec le code de l'upload lui-même).
Cela se fait soit avec
ini_set, soit par l'intermédiaire un fichier .htaccess, soit dans le php.ini, mais il est très peu probable que ce soit possible sur un serveur mutualisé. Demande à ton hébergeur la marche à suivre.
Malheureusement avec mon hébergeur ne peut pas augmenter pour un serveur mutualisé :s qu'il est la solution dans ce cas ? (a part bien sur un serveur dédier )
la valeur des deux variable est de 20Mo et moi j'ai besoin au minimum a 60Mo (il s'agit des vidéos de 30s donc en générale c'est > 40Mo)
vous connaissez des hébergeur qui pourrai augmenter même dans mutualisé ?
Re: upload une vidéo en php
Posté : 12 juin 2013, 23:41
par AB
Chez OVH ces deux valeurs sont actuellement de 60 Mo sur un mutualisé...
Mais :
Le problème est qu'il y a un autre réglage serveur qui est le timeout apache et qui est le temps d'attente maximum du serveur pour recevoir un post. Ce réglage est fixé par défaut (sans possibilité de modification sur un mutualisé) à 5 min soit 300 secondes, ce qui veut dire que le maximum de téléchargement possible dépendra donc aussi de la vitesse ascendante (de l'ordinateur vers le serveur) de la connexion internet.
Par exemple avec une connexion ascendante de 1024 Kbits/s on pourra télécharger un maximum d'environ 30 Mo en 5 minutes, il faudra donc une connexion ascendante de 2048 Kbit/s pour pouvoir télécharger 60 Mo en 5 minutes.
Re: upload une vidéo en php
Posté : 14 juin 2013, 22:07
par miiidooo19
Alors maintenant j'ai reussi a augmentée la valeur de upload_max_filesize et post_max_size mais il me reste problème de timeout quel variable faut changer au niveau de serveur ?
chez moi une video de 60Mo mis 30min :'( et a la fin c'est une erreur de serveur (le timeout)