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 26/04/2007, 16h42   #1
Invité régulier
 
Inscription : avril 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 31
Points : 7
Points : 7
Par défaut [FTP] Fichier corrompu suite à l'utilisation de la commande ftp_fput ?

Bonjour à tous !
Je suis bien embêtée car j'ai un souci que je traîne depuis deux jours.

Voilà, je possède un serveur FTP sur lequel je stocke des images
et une partie réservée au site internet :

(1) serveur FTP : /ftp-GestionFTP/
(2) site internet : /www/GestionFTP/

Dans un premier temps, je transfère le fichier séléctionné par l'utilisateur dans un répertoire "upload" sur (2). J'ai vérifié, à ce moment là, le fichier est valide et peut être consulté si c'est une image, elle s'affiche correctement.

Puis je l'envoie sur (1) avec le code suivant :

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
31
while($entry = $d->read()) {  
   if ( $entry != "."  && $entry != ".." ){
 
	$file = '../uploads/'. $param.'/'.$entry;
 
	$remote_file = '/ftp-GestionFTP/'. $param.'/'.$entry;
 
	// Mise en place d'une connexion basique
	$conn_id_ftp = ftp_connect($ftp_server_ftp);
 
	// Identification avec un nom d'utilisateur et un mot de passe
	$login_result_ftp = ftp_login($conn_id_ftp, $ftp_user_name_ftp, $ftp_user_pass_ftp);
 
	// Charge un fichier
 
	$fp = fopen($file, 'r');
 
       if(!ftp_fput($conn_id_ftp, $remote_file, $fp, FTP_ASCII)){
        echo " erreur de transfert ";
        }
		else{
		// unlink($file);	 
		}
 
 
	// Fermeture de la connexion
	ftp_close($conn_id_ftp);
fclose($fp);
	}
}  
$d->close();
C'est là qu'est mon problème. Si je me connecte avec un client FTP classique à (1) et que je download le fichier (identique au fichier d'origine : même taille) et quand je tente de l'ouvrir, l'ordinateur me dit que mon fichier est corrompu.

Je ne comprends pas pourquoi alors que la commande "ftp_fput" ne renvoit pas d'erreur lors du transfert ?
Pouvez vous me donner une indication ? Merci beaucoup beaucoup d'avance !
pinggu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 16h57   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Ne serait-ce pas dû au mode de transfert (ascii vs binaire) qui d'après votre code est purement et simplement forcé en ascii ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 17h01   #3
Invité régulier
 
Inscription : avril 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 31
Points : 7
Points : 7
Et bien effectivement, j'étais en train de tester en changeant ce paramètre, pour le passer en BINARY. Je vous tiens au courant/
PS : Merci pour la rapidité !
pinggu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 17h15   #4
Invité régulier
 
Inscription : avril 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 31
Points : 7
Points : 7
On dirait bien que ça marche héhéhé merci !

Bon du coup, tant que j'y suis, je pense qu'il est impossible de faire un lien direct vers un fichier se trouvant sur (1). C'est pour cette raison que si l'utilisateur souhaite télécharger un fichier sur son disque, je suis obligé de renvoyer ce fichier de (1) vers (2) afin d'avoir un lien concert et valide pour lancer le téléchargement.

Pour l'instant, j'ai une page contenant les fichiers présent sur (1) et la possibilité de les supprimer au moyen d'un bouton.

J'ai ajouté un bouton "télécharger".

En cliquant sur ce dernier, le système envoie le fichier en question de (1) vers (2).

Je voudrais pouvoir avoir en plus un autre action lancée par le bouton "télécharger", à savoir forcer le téléchargement du fichier qui vient d'arriver sur (2). Est-ce que ma vision du download est réalisble ou complètement utopique ?
pinggu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 17h32   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par pinggu
Je voudrais pouvoir avoir en plus un autre action lancée par le bouton "télécharger", à savoir forcer le téléchargement du fichier qui vient d'arriver sur (2). Est-ce que ma vision du download est réalisble ou complètement utopique ?
Je pense que c'est réalisable et le code correspondant est dans la FAQ (attention il ne faudra rien envoyer au navigateur avant).

Est-ce que vous avez trouvé un moyen d'utiliser le mode de transfert adéquat suivant le "type" du fichier ? (fileinfo ?)
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 17h43   #6
Invité régulier
 
Inscription : avril 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 31
Points : 7
Points : 7
Ah non, pas du tout. Disons que mes tests se sont portés sur un fichier jpg, et toujours le même. Je ne savais pas que suivant le type du fichier, le mode de transfert est variable.

C'est plutôt bon à savoir, parce que j'autorise l'upload de nombreux

formats :gz|zip|tar|pdf|gif|jpg|jpeg|png|txt|dmg|eps|ai|qxd|sit|tiff|psd|doc|ppt|xls|indd|inx
pinggu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 10h29   #7
Invité régulier
 
Inscription : avril 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 31
Points : 7
Points : 7
Je me demandais : est-il possible de forcer le téléchargement de fichier directement à partir du compte FTP (1) ? Parce que mon système de transfert de comptes à comptes est acceptable pour les fichiers de petite taille mais ça devient un peu plus long pour les gros fichiers.
pinggu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 10h58   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par pinggu
Je me demandais : est-il possible de forcer le téléchargement de fichier directement à partir du compte FTP (1) ?
Non parce que le serveur web pour forcer le téléchargement a besoin du fichier puisque le principe c'est d'envoyer directement son contenu. Si le serveur FTP est, par contre, accessible depuis l'extérieur vous pourriez utiliser des liens vers ce serveur (ftp://utilisateur:mot_de_passe@mon_s...re1/un_fichier) : ça fait une étape de moins.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 11h15   #9
Invité régulier
 
Inscription : avril 2005
Messages : 31
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 31
Points : 7
Points : 7
Oui il est accessible depuis l'extérieur et je peux accéder aux fichiers avec une adresse du type (ftp://utilisateur:mot_de_passe@mon_s...re1/un_fichier) .

Sauf que je ne voudrai pas que les utilisateurs puissent voir l'adresse qui contient tout de meme le login et le mot de passe...
pinggu 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 02h08.


 
 
 
 
Partenaires

Hébergement Web