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 14/02/2008, 14h09   #1
Invité régulier
 
Étudiant
Inscription : mai 2007
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 5
Points : 5
Par défaut [FTP] Récupération de fichier sur un serveur distant

Bonjour,
alors voilà je vous explique, je dois récupérer des fichiers qui sont dans un dossier sur un serveur distant. Ce sont des fichiers .ktl (fichiers texte), je dois récupérer les données qui sont dans chaque fichier présent dans le dossier dont le chemin est Froduction/working/mef_ktl/outfile.
J'ai fait un code qui doit (normalement) ouvrir le dossier et afficher la liste des fichier qui le compose. Ca fonctionne très bien quand je le fais avec un dossier qui se trouve en local mais pas avec celui qui est sur le serveur distant.
Voilà mon code:
Code :
1
2
3
4
5
6
7
8
<?php
$link = mysql_connect("192.168.1.6", "##", "##") or die("Impossible de se connecter : " . mysql_error());
$handle = @opendir("F:/Production/Working/mef_ktl/outfile/"); 
while ($file = @readdir($handle)) { 
echo "Fichier : ". $file. "<BR>"; 
}
@closedir($handle);
?>
Quand je l'éxecute, il me retourne une page blanche, comme si le dossier était vide. Mais en fait je pense qu'il ne rentre pas dans le while parce qu'il ne m'affiche même pas le "Fichier:".
J'espère que j'ai été assez clair!
Merci d'avance de votre aide
Bonne journée
valouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 14h14   #2
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Explique nous que viens faire "mysql_connect" là dedans?

Je crois que tu mélange peut être un peu les genre non? ou alors s'est une étourderie
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 14h26   #3
Invité régulier
 
Étudiant
Inscription : mai 2007
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 5
Points : 5
C'est pas une étourderie, en fait je sais que c'est pas bon puisque c'est pour avoir accès à la base or, je ne m'en sers pas, mais je sais pas si mettre simplement le chemin du dossier ça lui suffit à savoir où il faut qu'il aille chercher sachant qu'il y a plusieurs serveurs distants.
C'est compréhensibles??!!
merci
valouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 14h52   #4
Membre actif
 
Homme
Développeur Web
Inscription : juillet 2007
Messages : 193
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2007
Messages : 193
Points : 189
Points : 189
Ben clairement il va aller chercher sur le disque portant la lettre F de ta machine sur laquelle est hebergé ton script (ce qui peut être pire sur du linux)

Il serait je pense mieux de mettre le chemin avec l'adresse IP.
Ou utilise les fonction FTP de PHP pour te connecter et télécharger en local les fichiers.
metfan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 14h56   #5
Invité régulier
 
Étudiant
Inscription : mai 2007
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 5
Points : 5
Tu peux me mettre un exemple stp.
valouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 15h16   #6
Membre actif
 
Homme
Développeur Web
Inscription : juillet 2007
Messages : 193
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2007
Messages : 193
Points : 189
Points : 189
pour les fonction ftp, rien de bien compliquer:
http://fr2.php.net/manual/fr/ref.ftp.php

sinon
$handle = @opendir("http://192.128.0.1/Production/Working/mef_ktl/outfile/");
metfan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 15h38   #7
Invité régulier
 
Étudiant
Inscription : mai 2007
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 5
Points : 5
Merci, j'ai essayé
Code :
$handle = @opendir("http://192.128.1.6/Production/Working/mef_ktl/outfile/");
Mais ça m'affiche une page blanche.

Et je suis pas sure de l'autre code, le voilà:
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
<?php
// Mise en place d'une connexion basique
$conn_id = ftp_connect("192.168.1.6");

// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, "login", "motdepasse");

// Vérification de la connexion
if ((!$conn_id) || (!$login_result)) {
        echo "La connexion FTP a échoué !";
        echo "Tentative de connexion au serveur $ftp_server pour l'utilisateur $ftp_user_name";
        exit;
    } else {
        echo "Connexion au serveur $ftp_server, pour l'utilisateur $ftp_user_name";
    }

// Chargement d'un fichier
$upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 

// Vérification du status du chargement
if (!$upload) {
        echo "Le chargement FTP a échoué!";
    } else {
        echo "Chargement de $source_file vers $ftp_server en tant que $destination_file";
    }

// Fermeture du flux FTP
ftp_close($conn_id);
?>
Mais ça m'affiche ce message d'erreur:
Warning: ftp_login() [function.ftp-login]: Login or password incorrect! in C:\wamp\www\ftp.php on line 7
La connexion FTP a échoué !Tentative de connexion au serveur pour l'utilisateur

J'ai essayé avec tous les logins et mot de passe, aucun ne fonctionne. Il doit y avoir une erreur quelque part je pense!
merci
valouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 15h48   #8
Membre actif
 
Homme
Développeur Web
Inscription : juillet 2007
Messages : 193
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2007
Messages : 193
Points : 189
Points : 189
ben pour le FTP il faut qu'il y ai un compte FTP sur la machine distante et que tu connaisses les login et mdp.
metfan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 15h51   #9
Invité régulier
 
Étudiant
Inscription : mai 2007
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 5
Points : 5
Je vais me renseigner auprès de mon maitre de stage.
On peut quand même essayer avec handle. Vous sauriez pourquoi ça ne fonctionne pas?
valouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2008, 17h35   #10
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Compte tenu du fait que la configuratioin d'un serveur ftp n'est pas toujours très simple et que cela t'oublige à gérer des mots de passe et login.

Si ton serveur est en interne, ce qui semble être le cas. Il serait peut être interessant pour toi d'utiliser cette méthode en ayant préalablement lancer un serveur web qui publie le chemin au dessus de Production .
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$url = "http://192.128.1.6/Production/Working/mef_ktl/outfile/";
 
    $fp = fopen( $url, 'r' );
 
    $content = "";
 
 
    while( !feof( $fp ) ) {
 
       $buffer = trim( fgets( $fp, 4096 ) );
       $content .= $buffer;
 
    }
 
    echo $content;
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 16h42   #11
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Sinon regarde un peu la librairie CURL qui est dispo à partir de la version 5 de php.
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2008, 18h38   #12
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 riete
Sinon regarde un peu la librairie CURL qui est dispo à partir de la version 5 de php.
Non, c'est bien plus vieux et c'est ce qui rend cURL encore plus attrayant :
Citation:
Envoyé par http://fr.php.net/curl
Ces fonctions ont été ajoutées en PHP 4.0.2.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2008, 11h50   #13
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Citation:
Envoyé par julp Voir le message
Non, c'est bien plus vieux et c'est ce qui rend cURL encore plus attrayant :
Ok j'ai pris note merci
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 16h32   #14
Invité régulier
 
Étudiant
Inscription : mai 2007
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 5
Points : 5
Merci de vos réponse, j'ai un autre soucis maintenant.
Voilà mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$valeur=0;
set_time_limit($valeur);
// Mise en place d'une connexion basique
$conn_id = ftp_connect("192.168.4.1");
// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, "", "");
//Récupération du contenu d'un dossier
$contents = ftp_nlist($conn_id, "/");
// Affichage de $contents
var_dump($contents);
// Fermeture de la connexion
ftp_close($conn_id);
?>
Ca m'affiche ça:
array(6) { [0]=> string(3) "/AR" [1]=> string(4) "/BDX" [2]=> string(4) "/DOC" [3]=> string(7) "/idfile" [4]=> string(5) "/NPAI" [5]=> string(5) "/temp" } NULL

Je voudrais simplement récupérer le nom des dossiers, à savoir AR, BDX, DOC, idfile, NPAI et temp. Quelqu'un saurait comment je peux faire??
Merci d'avance.
valouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 17h01   #15
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
Vous ne pouvez pas appliquer ce traitement :
Code :
$contents = array_map(create_function('$v', 'return trim($v, "/");'), $contents);
?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2008, 10h30   #16
Invité régulier
 
Étudiant
Inscription : mai 2007
Messages : 65
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : mai 2007
Messages : 65
Points : 5
Points : 5
J'ai une amélioration!!!
J'arrive à avoir simplement \AR ...
Le code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$valeur=0;
set_time_limit($valeur);
// Mise en place d'une connexion basique
$conn_id = ftp_connect("192.168.4.1");
// Identification avec un nom d'utilisateur et un mot de passe
$login_result = ftp_login($conn_id, "retour_ar", "retour_ar");
//Récupération du contenu d'un dossier
//$contents = array_map(create_function('$v', 'return trim($v, "/");'), $contents);
$contents = ftp_nlist($conn_id, "/");
// Affichage de $contents
//$recup=file($contents);
$nombre=count($contents);
echo $nombre . "<br>";
for($i=0;$i=$nombre;$i++){
	$a=$contents[$i];
	echo "Element " . $a . "<br>";
}
// Fermeture de la connexion
ftp_close($conn_id);
?>
Le problème c'est que le for tourne indéfiniement et que ça m'affiche rien (enfin si le "Element" mais $a est vide pour lui).
Quand je fai à la place du for juste
Code :
1
2
$a=$contents[0];
          echo $a;
par exemple
Ca me renvoie bien \AR.
Je comprends pourquoi le for ne fonctionne pas, si quelqu'un a une idée!!
Merci
Bonne journée
valouche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h13.


 
 
 
 
Partenaires

Hébergement Web