Problème de téléchargement de vidéo

marie
Invité n'ayant pas de compte PHPfrance

09 mai 2006, 09:27

Bonjour, voila j'aimerais créer un formulaire de téléchargement vidéo mais la vidéo n'est pas téléchargée.
L'enregistrement en base de donné fonctionne mais pas le transfert de la vidéo.
Voici mon code :
<form action="index.php?videos=oui&valid=nouv&nouvvid=oui" method="post" enctype="multipart/form-data" onsubmit="return submitForm(this)"> 
									<table width="450" border="0" cellspacing="0" cellpadding="5" align="center" class="textcreation">
										<tr>
											<td align="left" valign="middle"><strong>Titre :</strong></td>
											<td align="left" valign="middle"><input name="titre" type="text" size="40" maxlength="256" /></td>
										</tr>
										<tr>
											<td align="left" valign="top"><strong>Déscription :</strong></td>
											<td align="left" valign="middle"><textarea name="description" cols="40" rows="5"></textarea></td>
										</tr>
										<tr>
											<td align="left" valign="middle"><strong>Vidéos :</strong></td>
											<td align="left" valign="middle"><input name="videos" type="file" size="40" /></td>
										</tr>
										<tr>
											<td align="center" valign="middle" colspan="2"><input name="valider" type="submit" value="Valider" /><img src="loading.gif" id="monImageDeChargement" style="display:none" /> </td>
										</tr>
									</table>
								</form>
								<?php } 
								if (isset($_GET['valid'])) { 
								$titre = addslashes($_POST['titre']);
								$description = addslashes($_POST['description']);
								if ($titre == '') {
								echo '<font color="#FF0000"><strong>Veuillez ajouter un titre</strong></font>';
								}
								if (($_FILES['videos']["name"] != '') && ($titre != '')) { 
								if (strtolower(substr($_FILES['videos']['name'],-4))!=".wmv") {
								echo '<font color="#FF0000"><strong>Votre vidéo doit être aux format .wmv</strong></font><br><br>';
								} else {
								// test taille max 1Mo
								if ($_FILES['videos']['size'] > 10000*1024) {
								echo '<font color="#FF0000"><strong>Votre vidéo ne doit pas dépasser 10Mo</strong></font><br><br>';
								} else {
								// si tout est ok
								$videos1 = $_FILES['videos']["name"];
								$repertoireDestination = "../videos/".$_SESSION['pseudo']."-".$videos1."";
								/* copie le fichier dans le repertoire */
								copy($HTTP_POST_FILES['videos']['tmp_name'], $repertoireDestination );
								echo '<font color="#0000FF"><strong>Votre vidéo a été ajouté</strong></font>';
								$pseudo = $_SESSION['pseudo'];
								$date = date("d/m/Y");
								if ($_GET['valid'] == 'nouv') {
								mysql_query("INSERT INTO videos (pseudo, titre, description, date, nom) VALUES ('$pseudo', '$titre', '$description', '$date', '$videos1')") or die (mysql_error());
								} else {
								$id = $_GET['valid'];
								mysql_query("UPDATE videos SET pseudo='$pseudo', titre='$titre', description='$description', date='$date', nom='$videos1' where id = '$id'") or die (mysql_error()); 
								}
								?>
Merci pour votre aide

Eléphant du PHP | 288 Messages

09 mai 2006, 09:32

salut essaye avec
  move_uploaded_file
ça devrait marché

bonne chance

marie
Invité n'ayant pas de compte PHPfrance

09 mai 2006, 09:58

J'ai testé mais ca ne fonctionne pas pourtant j'ai vérifié le répertoire de déstination voila ce que j'ai fais :
move_uploaded_file($HTTP_POST_FILES['videos']['tmp_name'], $repertoireDestination );
Merci

Mammouth du PHP | 965 Messages

09 mai 2006, 10:01

Essaye comme ca :
move_uploaded_file($HTTP_POST_FILES['videos']['tmp_name'], $repertoire . Destination );

marie
Invité n'ayant pas de compte PHPfrance

09 mai 2006, 10:04

J'ai essayé mais mon répertoire de déstination est dans

Code : Tout sélectionner

$repertoireDestination
, et donc cela m'affiche une erreur

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 mai 2006, 10:06

Quel est le message d'erreur ?

Généralement, c'est textuellement le problème et c'est la meilleure solution pour résoudre le problème ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 965 Messages

09 mai 2006, 10:06

il faut mettre : $repertoire . $fichier

autrement dit 2 variable, une pour le nom du dossier et une pour le nom du fichier a copier.

Je sais pas si c'est clair j'avais oublier de mettre le $ devant Destination au dessus.

Mammouth du PHP | 965 Messages

09 mai 2006, 10:07

move_uploaded_file($HTTP_POST_FILES['videos']['tmp_name'], $repertoire . $videos1 );

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 mai 2006, 10:08

agité, si j'en crois ce bout de code :
$videos1 = $_FILES['videos']["name"];
$repertoireDestination = "../videos/".$_SESSION['pseudo']."-".$videos1."";
$repertoireDestination, malgrès son nom contient l'url TOTAL, avec répertoire + nom du fichier ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 965 Messages

09 mai 2006, 10:12

Excuse je pensais qu'il vallait mieux redefinir pour que ce soit plus clair le nom du dossier suivi du nom du fichier :?

marie
Invité n'ayant pas de compte PHPfrance

09 mai 2006, 10:12

oui $repertoireDestination contient les deux j'ai essayé en des deux manières mais sans résultat et cela ne m'affiche aucune erreur, ajoute les données dans la BDD mais ne copy pas la vidéo???
Merci pour votre aide

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 mai 2006, 10:16

C'est 2 manières de penser. Personnellement, j'aime bien ne manipuler qu'une seule variable contenant l'url totale, mais c'est mon choix et je n'oblige personne à le suivre.

Après, comme marie a décidé d'utiliser la même méthode que moi ... ;)
Par contre, le nom de la variable $repertoireDestination est très mal choisi ;)

Pour afficher tout les messages d'erreur, utilise
error_reporting(E_ALL);
en haut de ta page

Sinon, pour un debugage efficace, je te conseille de faire afficher les url afin de vérifier que tout se passe comme tu veux. Il est possible que le transfert se fasse, mais pas là où tu le voudrais :lol:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

marie
Invité n'ayant pas de compte PHPfrance

09 mai 2006, 10:28

les url sont correct le repertoire de déstination...
Avec

Code : Tout sélectionner

error_reporting(E_ALL);
je n'ai aucun résultat :(
Le fait de travailler sur un disque externe en local ca peut jouer?
J'ai un téléchargement de photo qui fonctionne très bien..
Merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

09 mai 2006, 10:29

Est-ce que tu utilises encore copy() ou est-ce que tu utilises move_uploaded_file()
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

marie
Invité n'ayant pas de compte PHPfrance

09 mai 2006, 10:30

j'ai testé les deux sans résultat