par
Dev » 24 janv. 2007, 15:55
J'avance dans mes recherches... même si mon post ne suscite pas un engouement phénoménal...
Voici le code modifié :
<pre>
<?
$filename = 'monfichier.zip';
$content = file_get_contents('./'.$filename);
$ftp_host = '192.168.1.101'; // A remplacer
$ftp = ftp_connect($ftp_host); flush();
$MyArray = ftp_raw($ftp, "SYST"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "USER test"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "PASS test"); echo $MyArray[0].'<br>'; flush();
ftp_set_option($ftp, FTP_TIMEOUT_SEC, 300); // défaut 90
$MyArray = ftp_raw($ftp, "PWD"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "TYPE I"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "MODE Z"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "PASV"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "STOR $filename"); echo $MyArray[0].'<br>'; flush();
$MyData = array();
$MyData = explode(' ',$MyArray[0]);
$full_ip = str_replace('(','',$MyData[4]);
$full_ip = str_replace(')','',$full_ip);
$Full_ip = explode(',',$full_ip);
$ip = $Full_ip[0].'.'.$Full_ip[1].'.'.$Full_ip[2].'.'.$Full_ip[3];
$port = $Full_ip[4]*256+$Full_ip[5];
echo $ip.':'.$port.'<br>'; flush();
$fp = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
echo 'Canal de transfert pret !<br>';
// Ecrivons quelque chose dans notre fichier.
if (fwrite($fp, $content) === FALSE) {
echo "Impossible d'écrire dans le fichier";
exit;
} else {
echo "L'écriture de dans le fichier distant a réussi<br>";
}
fclose($fp);
}
$MyArray = ftp_raw($ftp, "QUIT"); echo $MyArray[0].'<br>'; flush();
?>
</pre>
Ca ouvre la connexion, le serveur FTP attend un flux de données mais rien ne se passe. Je dois faire une erreur dans mon script.
Voici la sortie :
215 UNIX Type: L8
331 User name okay, need password.
230 User logged in, proceed.
257 "/" is current directory.
200 Type set to I.
200 MODE Z ok.
227 Entering Passive Mode (192,168,1,101,17,24)
Qqun a une idée ?
Merci d'avance. TheFooL
J'avance dans mes recherches... même si mon post ne suscite pas un engouement phénoménal...
Voici le code modifié :
[php]<pre>
<?
$filename = 'monfichier.zip';
$content = file_get_contents('./'.$filename);
$ftp_host = '192.168.1.101'; // A remplacer
$ftp = ftp_connect($ftp_host); flush();
$MyArray = ftp_raw($ftp, "SYST"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "USER test"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "PASS test"); echo $MyArray[0].'<br>'; flush();
ftp_set_option($ftp, FTP_TIMEOUT_SEC, 300); // défaut 90
$MyArray = ftp_raw($ftp, "PWD"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "TYPE I"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "MODE Z"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "PASV"); echo $MyArray[0].'<br>'; flush();
$MyArray = ftp_raw($ftp, "STOR $filename"); echo $MyArray[0].'<br>'; flush();
$MyData = array();
$MyData = explode(' ',$MyArray[0]);
$full_ip = str_replace('(','',$MyData[4]);
$full_ip = str_replace(')','',$full_ip);
$Full_ip = explode(',',$full_ip);
$ip = $Full_ip[0].'.'.$Full_ip[1].'.'.$Full_ip[2].'.'.$Full_ip[3];
$port = $Full_ip[4]*256+$Full_ip[5];
echo $ip.':'.$port.'<br>'; flush();
$fp = fsockopen($ip, $port, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br>\n";
} else {
echo 'Canal de transfert pret !<br>';
// Ecrivons quelque chose dans notre fichier.
if (fwrite($fp, $content) === FALSE) {
echo "Impossible d'écrire dans le fichier";
exit;
} else {
echo "L'écriture de dans le fichier distant a réussi<br>";
}
fclose($fp);
}
$MyArray = ftp_raw($ftp, "QUIT"); echo $MyArray[0].'<br>'; flush();
?>
</pre>
[/php]
Ca ouvre la connexion, le serveur FTP attend un flux de données mais rien ne se passe. Je dois faire une erreur dans mon script.
Voici la sortie :
[quote]215 UNIX Type: L8
331 User name okay, need password.
230 User logged in, proceed.
257 "/" is current directory.
200 Type set to I.
200 MODE Z ok.
227 Entering Passive Mode (192,168,1,101,17,24)[/quote]
Qqun a une idée ?
Merci d'avance. TheFooL