Page 1 sur 1

$_FILES petite incompréhension

Posté : 13 nov. 2012, 22:22
par webamon
Salut tout le monde,

Alors voila mon problème.
Je débute en PHP et j'essaye de réaliser une page qui me permet d'uploader une vidéo.
Mais je n'arrive pas a récupérer les données du fichier que j'upload.

C'est à dire que quand je clique sur le submit, le fichier se charge mais une fois chargé il ne se passe rien, je n'ai même pas le message qui me dit que l'upload a bien eu lieu.

Le print de $_FILES me retourne array() , il est vide quoi.

Quelqu'un aurait il une idée ?

Code : Tout sélectionner

<?php include 'connexion.php'; ?> <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>NICOUPLOAD</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <?php $message='Choisis un fichier et essayes de taper un nom simple et propre'; if (!empty($_POST['submit'])) { extract($_POST);//permet de récuperer toute les variable du formulaire $nomDossier =date('Y'); #si le fichier n'existe pas on créer le dossier dans le serveur if (!file_exists($nomDossier)){mkdir($nomDossier, 0777);} #copie l'image sur notre serveur move_uploaded_file($_FILES['movie']['tmp_name'], $nomDossier.'/'.$_FILES['movie']['name']); $link = $nomDossier.'/'.$_FILES['movie']['name']; $sql="INSERT INTO fichier (id, nom, link) VALUES ('','$nom','$link')"; #JE LANCE MA REQUETTE SQL mysql_query($sql) or die(mysql_error()); $message='ajout terminé'; } ?> <pre><?php print_r($_FILES); ?></pre> <div id="content" class="upload"> <p><?php echo $message; ?></p> <form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data"> <p>Nom du film</br><input type="text" name="nom" value="" id="nom"></p> <input type="file" name="movie" value="" id="movie"/> <p><input name="submit" type="submit" value="Uploader"></p> </form> </div> </body> </html>

Re: $_FILES petite incompréhension

Posté : 13 nov. 2012, 22:43
par moogli
salut,


print, n'affiche que les données simples.

utilise print_r ou var_dump pour voir le contenu.

par exemple var_dump($_FILES);

Oublie extract et utilise $_POST tu va y gagner en lisibilité et en maintenance.

Ton code peux être corriger ainsi
<?php
	include 'connexion.php';
 ?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
   <meta charset="UTF-8">
   <title>NICOUPLOAD</title>
   <link rel="stylesheet" href="css/style.css">
</head>
<body>
	<?php
	$message='Choisis un fichier et essayes de taper un nom simple et propre';
	if (!empty($_POST['submit'])) {
		$nomDossier = date('Y');
		#si le fichier n'existe pas on créer le dossier dans le serveur
		if (!file_exists($nomDossier)){
			mkdir($nomDossier, 0777);
		}
		#copie l'image sur notre serveur
		move_uploaded_file($_FILES['movie']['tmp_name'], $nomDossier.'/'.$_FILES['movie']['name']);
		$link =  $nomDossier.'/'.$_FILES['movie']['name'];

		$sql='INSERT INTO fichier (id, nom, link) VALUES (null,\''.mysql_real_escape_string($_POST['nom']).'\',\''.$link.'\')';
		#JE LANCE MA REQUETTE SQL
		$retour = mysql_query($sql);
		if($retour === false) {
			echo 'Erreur SQL : '.mysql_error();
		}
		$message='ajout terminé';
	}
	?>
    <pre><?php  var_dump($_FILES); ?></pre>
   <div id="content" class="upload">
       <p><?php echo $message; ?></p>
       <form action="" method="post" accept-charset="utf-8" enctype="multipart/form-data">
                <p>Nom du film</br><input type="text" name="nom" value="" id="nom"></p>
                <input type="file" name="movie" value="" id="movie"/>
              <p><input name="submit" type="submit" value="Uploader"></p>
         </form>
      </div>
</body>
</html>
Avant d'effectuer la copie du fichier vérifie l'erreur soit bien 0, sinon vérifie la valeur, expliquée ici


@+

Re: $_FILES petite incompréhension

Posté : 13 nov. 2012, 22:52
par webamon
Merci pour cette réponse rapide.

Pour l'erreur j'ai un retour "empty"... Après j'essaye d'uploader mais ça ne me met pas le message upload réussi et le Fichier n'est pas copié dans mon dossier, cela voudrait donc dire qu'il y a un problème au niveau de mon code concernant l'enregistrement du fichier, ou de la requête SQL ?

Re: $_FILES petite incompréhension

Posté : 13 nov. 2012, 22:59
par moogli
non, regarde ce qu'il y a dans $_FILES['movie']['error'] et compare avec le lien que je t'ai donné dans ma réponse précédente.


je parie sur : fichier trop gros.


par défaut la taille max des fichiers que l'on peu uploader c'est 2Mo (tu peux le vérifier dans un php.ini) ce qui est surement trop peux suivant le type de vidéo.




@+

Re: $_FILES petite incompréhension

Posté : 13 nov. 2012, 23:23
par webamon
Bha des php.ini j'en ai plusieurs, donc je sais pas lequel modifier :s...

Re: $_FILES petite incompréhension

Posté : 14 nov. 2012, 03:17
par AB
Bha des php.ini j'en ai plusieurs, donc je sais pas lequel modifier :s...
Je ne doute pas que tu aies plusieurs ".ini" mais plusieurs "php.ini" ce serait étonnant.

Sinon fais attention car si tu dépasse la directive "post_max_size" du serveur alors les variables $_POST et $_FILES seront vides. Il y a une explication sur les moyens de gérer cette erreur dans ce tuto.

Re: $_FILES petite incompréhension

Posté : 14 nov. 2012, 11:28
par webamon
Ok d'ac !

Merci pour vos réponse.
Je regarde ton lien et essaye de modifier le php.ini et je vous tiens au courant ^^

Re: $_FILES petite incompréhension

Posté : 14 nov. 2012, 12:57
par Mazarini
Pour info, j'ai découvert récemment qu'il y avait plusieurs php.ini sur ma machine : un pour apache et un pour la ligne de commande.

Re: $_FILES petite incompréhension

Posté : 14 nov. 2012, 13:55
par AB
Pour info, j'ai découvert récemment qu'il y avait plusieurs php.ini sur ma machine : un pour apache et un pour la ligne de commande.
Ah oui, je l'avais oublié celui-là. Je pensais au php.ini accessible depuis l'option configuration du menu du serveur local.