Problème Upload_file

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème Upload_file

par dunbar » 17 mai 2007, 00:17

Oups :wink:

par dunbar » 16 mai 2007, 21:05

Salut,

Bon alors au risque de surprend j'ai tout repris et ça fonctionne presque parfaitement :P
Enfin la partie upload et création du dossier fonctionne
Il me reste un pt soucis :wink:
$ext_autoriser = array(".swf", ".flv", ".doc", ".pdf", ".jpg",
".ppt", ".xls", ".bmp", ".gif", ".avi", ".wmv");
Quand je souhaite télécharger un fichier .flv et .swf donc toutes les extensions flash Monsieur PHP (mais probablement parce que je ne sais pas lui parler)ne veux pas donc ma question est pourquoi :?:

D'avance merci

par Ryle » 16 mai 2007, 14:46

Erf, j'avais pas vu qu'il y en avait deux, je m'étais arrêté au premier en fait :
if( !move_uploaded_file($tmp_file) ) 
            { 
                echo("Le fichier est introuvable"); 
                exit(0); 
            } 
Je me demande si du coup, il ne te dégage pas le fichier du dossier temporaire, faisant ensuite planter ton second move_uploaded_file() .. un file_exists() en précisant le chemin vers le dossier temporaire me semblerait plus judicieux pour tester si le fichier existe...
Ou simplement faire confiance aux valeurs de $_FILE pour savoir si le fichier a bien été uploadé :)

par dunbar » 16 mai 2007, 14:30

Salut pour les "" sorry c'est quand j'ai fait le copier coller.
Pour la modification de la variable oui effectivement tu à raison et j'ai modifier, par contre le chemin du fichier est bien présent ici
$folder_path  = URL_IMG_VIDEO.$nom_fic_de_8_lettres = substr(md5(microtime()),0,8);
Et cette partie fonctionne il me crée bien un nouveau dossier à chaque validation mais pour le reste :boire4:

par Ryle » 16 mai 2007, 13:59

En dehors peut être de rendre le code html invalide, la guillemet en trop ici ne perturbe pas le navigateur et ne change rien aux données envoyées ...

Utilises des echo et affiche les valeurs puor savoir dans quelles structures il entre (entre-t-il bien dans le if ($_GET['action'] == 'add') par exemple ?)
D'ailleurs, au lieu de faire du mélange GET / POST, tu pourrais tout aussi bien passer cette valeur dans un champ caché et tout récupérer en post:

Code : Tout sélectionner

<input type="hidden" name="action" value="add" />
Par ailleurs, je te recommande d'expérience de changer de nom pour cette variable pour éviter les confusion avec l'attribut "action" du formulaire :)

Quant au problème que tu rencontres, il me semble qu'il manque le chemin et le nom du fichier de destination dans ton : move_uploaded_file($tmp_file) :)

Re: Problème Upload_file

par lem » 16 mai 2007, 13:20

<form method="POST" enctype="multipart/form-data" action="insert_video.php?action=add"">
Il y a une " en trop ici en tout cas, avant le >.
Ca se voit rien qu'avec les couleurs. Tout le reste de ton script apparait en rouge.

Re: Problème Upload_file

par dunbar » 15 mai 2007, 22:05

Les balises form sont à leurs place, et je n'ai aucun message d'erreur et c'est bien ça qui me tracasse.
Il execute la première requette mais ne va pas plus loin ??
<form method="POST" enctype="multipart/form-data" action="insert_video.php?action=add">

	<p>&nbsp;</p>
	<table border="0" cellpadding="0" cellspacing="0" width="74%" id="table1">
		<tbody>
		<tr>
			<td width="125">Section :</td>
			<td><select size="1" name="section">
			<option value="win98">Windows 98</option>
			<option value="winxp">Windows xp</option>
			<option value="winvista">Windows vista</option>
			<option value="Office">Office</option>
			<option value="Autre">Autre</option>
			</select></td>
		</tr>
		<tr>
			<td width="125">Titre : </td>
			<td><input type="text" name="titre" size="20" /></td>
		</tr>
		<tr>
			<td width="125" valign="top">Commentaire(s) :</td>
			<td><textarea rows="5" name="commentaire" cols="50"></textarea></td>
		</tr>
		<tr>
			<td width="125">Fichier :</td>
			<td><input type="file" name="fichier" size="20" /></td>
		</tr>
	</tbody>
	</table>
	<p><input type="submit" value="Envoyer" name="B1" /><input type="reset" value="Rétablir" name="B2" /></p>
</form>

Re: Problème Upload_file

par Cyrano » 15 mai 2007, 21:41

...J'ai pondu un srcipt pour télécharger des vidéos, mais bien sûr il ne fonctionne pas...
Ce type d'information ne nous avance pas des masses :
- Obtiens-tu un (des) message(s) d'erreur ?
- As-tu essayé de faire afficher ce qui est envoyé par ton formulaire ?
- N'as-tu pas oublié dans ta balise <form> un attribut enctype permetttant d'envoyer des fichiers ?

Problème Upload_file

par dunbar » 15 mai 2007, 20:48

Bonsoir,

J'ai pondu un script pour télécharger des vidéos, mais bien sûr il ne fonctionne pas
Une fois sur 5 il prend les données des $_POST mais pas toujours :?: :twisted:
Et il ne veut pas inscrire le nom du fichier, et ne télécharge pas celle-ci non plus
Alors ma question est simple pourquoi je m'y suis prie encore une fois comme un manche :?:
<?php
include_once "data/config.php";

		//****************************************
		//**	Connexion à la base de données 	**
		//****************************************

		$sql = mysql_connect( DB_HOST, DB_LOGIN, DB_PASS) or die("Erreur MySQL : impossible de se connecter au serveur de données");
		//Sélection de la base de données
		mysql_select_db(DB_BASE) or die("Erreur MySQL : impossible de se connecter à la base de données '".DB_BASE."'");
		//****************************************

        //*****************************************
        //***   Préparation du dossier et fichier *
        //*****************************************

        if ($_GET['action'] == 'add') {
		$folder_path = URL_IMG_VIDEO.$nom_fic_de_8_lettres = substr(md5(microtime()),0,8);

		       if (!file_exists($folder_path)){
			       mkdir($folder_path,0777, true);
		            }


		$folder_path.= '\\';
		CHMOD($folder_path, 0777);

        $titre        = $_POST['titre'];
		$commentaire  = $_POST['commentaire'];
		$section      = $_POST['section'];

          //*****************************************
          //***   Insertion dans la TABLE           *
          //*****************************************


	echo $sql = "INSERT INTO
		            movie
		            SET
		            id_video                   = '',
		            titre                      = '".mysql_real_escape_string($titre)."',
		            commentaire                = '".mysql_real_escape_string($commentaire)."',
		            date_creation              = '".mysql_real_escape_string($date_creation)."',
		            date_modification          = '".mysql_real_escape_string($date_modification)."',
		            section                    = '".mysql_real_escape_string($section)."',
		            ch_video                   = '".mysql_real_escape_string($folder_path)."'
		            ";


                    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());



		for ($i=0; $i<count($_POST['fichier']['name']); $i++) {
			$tmp_file = $_POST['fichier']['tmp_name'][$i];
			if ($tmp_file == null){
				break;
			}
			if( !move_uploaded_file($tmp_file) )
			{
				echo("Le fichier est introuvable");
				exit(0);
			}

			// on vérifie maintenant l'extension
			$type_file = $_POST['fichier']['type'][$i];

			if( !strstr($type_file, 'FLV') && !strstr($type_file, 'WMV'))
			{
				echo("Le fichier n'est pas un fichier valide !");
				exit(0);
			}

			// on copie le fichier dans le dossier de destination
			$name_file = $_POST['fichier']['name'][$i];
			$saved_file = $folder_path.$name_file;
			if( !move_uploaded_file($tmp_file, $saved_file) )

            //*****************************************
           //***   Mises à jour de la TABLE           *
           //*****************************************

			echo $sql = "UPDATE
		            movie
		            SET
		            video    = '".$name_file."'
                    WHERE
					id_video = '".$data['id_video']."'";



                    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());


			{
				echo("Impossible de copier le fichier dans '".$folder_path."'");
				exit(0);
			}

			echo "'".$sql."',</br>";
		}

     }

exit();


?>
D'avance merci