Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/02/2007, 16h09   #1
Membre du Club
 
Avatar de Shandler
 
Inscription : février 2005
Messages : 485
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 485
Points : 67
Points : 67
Par défaut Vérification de fichier téléchargé

Bonjour,

Voila j'ai le code ci-dessous qui marche trés bien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function tansfert($nom_file,$taille,$destination)
{	  		                   
    //Comparaison de la taille de l'image.
    if($_FILES[$nom_file]['size'] > $taille && (substr($_FILES[$nom_file]['type'],0,5) == 'image')))
    {                               
      return 'Votre fichier dois avoir une taille max de '.$taille;
    }                     
    else
    {
      //Code permettant d'enlever l'ancienne extension du fichier.
  		$extension= substr($_FILES[$nom_file]['name'], strrpos($_FILES[$nom_file]['name'],"."));
 
  		$Nom_Fichier=str_replace($extension,'',$_FILES[$nom_file]['name']);
 
  		$New_Fichier = $Nom_Fichier.$extension;		
 
       //Condition permettant d'ajouter un chiffre si le nom de la photo existe deja.
  	   while(file_exists($destination."/".$New_Fichier))
  	   {
  	      $i++;
  	      $New_Fichier = $Nom_Fichier."_".$i.$extension;
  	   }
 
			 //Condition permettant d'insérer le fichier telecharger dans le repertoire destinataire.
	     if(!move_uploaded_file($_FILES[$nom_file]['tmp_name'],$destination."/".$New_Fichier))
	     {
          return 'erreur de transfere';
       }
     }			                                  
}
Donc voila mon problème c'est que lorsque j'utilise cette fonction 2 fois dans un formulaire pour envoyer 2 types de fichiers (video et image).
Aprés validation si une erreur survient sur l'un des fichiers télécharger le 2eme est quand même télécharger car lui n'a pas d'erreur.

Mais ce que je voudrais c'est que les 2 fichiers soit télécharger si y a pas d'erreur et si une erreur survient sur l'un des 2, aucun des 2 fichiers n'est uploader.

Merci de votre aide.
Shandler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 16h21   #2
Membre habitué
 
Avatar de arnobase
 
Inscription : novembre 2006
Messages : 150
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2006
Messages : 150
Points : 106
Points : 106
alors il faudrait te débrouiler pour tester le retour de cette fonction au niveau supérieur et ne lancer l'up du deuxième que si le premier s'est bien passé (peut-etre qu'un code d'erreur serait plus simple a gerer que ton message...)

genre
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
if (tansfert($nom_file1,$taille,$destination) != -1) {
    if (tansfert($nom_file2,$taille,$destination) != -1) {
        echo "tout va bien";
        ...
    }
    else {
        echo "problème fichier 2";
        ...
    }
}
else {
    echo "problème fichier 1";
    ...
}
enfin genre koi...

[EDIT] oui sauf que la le premier fichier s'uploade qd meme si le deuxieme plante mais bon tu peux adapter... [/EDIT]
__________________
.
La vie est un long torrent tranquile...
arnobase est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 16h25   #3
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Pour compléter ce que dit arnobase, tu peux faire en sorte que tansfert() retourne le nouveau pathfile du fichier ajouté. La fonction qui call transfert() plusieurs fois peut empiler ces pathfile dans un tableau par exemple et utiliser ces données ensuite pour faire des unlink() si transfert() échoue une fois
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 16h40   #4
Membre du Club
 
Avatar de Shandler
 
Inscription : février 2005
Messages : 485
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 485
Points : 67
Points : 67
En gros ce que vous me conseillez c'est de supprimer le fichier uploader si une erreur survient.
Mais disons que si l'utilisateur envoie un fichier dont l'un 2 est assez gros type video et que le 2éme fichier est une image mais la taille est pas bonne.
Donc l'utilisateur valide son formulaire attend un certain temps que la vidéo qui elle est bonne finisse de se télécharger pour en faite se retrouver encore devant le formulaire avec l'erreur pour la photo et donc il doit re-envoyer la vidéo.

Je pense que se systéme risque d'etre lourd vis a vis de l'utilisateur.

Merci a vous
Shandler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 16h48   #5
Membre habitué
 
Avatar de arnobase
 
Inscription : novembre 2006
Messages : 150
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : novembre 2006
Messages : 150
Points : 106
Points : 106
bah alors tu supprime pas ton fichier et tu stocke l'etat de l'up de chaque élément dans une variable session par exemple...
Après tu rajoute un test de l'upload avant d'envoyer et c'est darti mon kiki

je pense à un controle de serveur comme dans les formulaires ou on fait apparaitre des messages en rouge si un champ n'est pas correct, ben là tu testes si ton fichier est déja uploadé et si c'est le cas tu ne remet pas le champ correspondant dans ta page lors d'un deuxième appel...
__________________
.
La vie est un long torrent tranquile...
arnobase est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 16h50   #6
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
Citation:
Mais ce que je voudrais c'est que les 2 fichiers soit télécharger si y a pas d'erreur et si une erreur survient sur l'un des 2, aucun des 2 fichiers n'est uploader.
Moi j'ai compris que tu ne voulais garder aucun fichier dans le cas d'une erreur sur un seul fichier.

Tu n'as qu'a utiliser la même technique que dans mon post précédent sauf que si jamais il y a une erreur, les call à transfert() continuent jusqu'au dernier fichier. Ensuite tu sauras quel fichier(s) n'est pas bon et tu pourras générer un formulaire juste pour ce(s) fichier(s) là.
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2007, 17h02   #7
Membre du Club
 
Avatar de Shandler
 
Inscription : février 2005
Messages : 485
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 485
Points : 67
Points : 67
goodpz tu as compris ce que je voulais mais sauf que avec ta technique les fichiers bon son télécharger et en faite mon formulaire renvoie que les fichiers qu'il a pas réussi a télécharger si j'ai bien compris ton idée car cette technique j'y avais pensé mais je trouvais ca assez lourd coté script.

Merci
Shandler est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h26.


 
 
 
 
Partenaires

Hébergement Web