IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[FTP] Fichier corrompu suite à l'utilisation de la commande ftp_fput ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    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 ?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    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é !

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    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 ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    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 ?)

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    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

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    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.

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    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.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 31
    Points : 18
    Points
    18
    Par défaut
    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...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] fichier corrompu lors de l upload ftp
    Par bobylastar49 dans le forum C#
    Réponses: 3
    Dernier message: 15/01/2013, 10h33
  2. Problème ftp fichier corrompu
    Par bobylastar49 dans le forum C#
    Réponses: 0
    Dernier message: 12/01/2013, 11h16
  3. Fichier corrompu par méthode get en Net::FTP
    Par voulton dans le forum Programmation et administration système
    Réponses: 3
    Dernier message: 25/07/2007, 14h27
  4. [FTP] fichier corrompu sur free
    Par Tapess dans le forum Langage
    Réponses: 4
    Dernier message: 10/06/2007, 17h58
  5. Récupérer un fichier suite à l'utilisation de la commande rm
    Par Kimael dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 02/10/2004, 18h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo