Télécharger un fichier par son url

Télécharger un fichier par son url - PHP - Programmation

Marsh Posté le 13-06-2005 à 10:18:57    

Bonjour,
 
Auriez-vous une fonction en php qui permet de télécharger un fichier, dans un dossier temp situé en local, par son url.
Je ne veux pas le lire et apres le copier dans un autre fichier donc fread etc pas la peine. Je veux le télécharger et le mettre en local sur mon HDD. Si vous avez une fonction ou une page expliquant une méthode merci de me la communiqué car perso je trouve pas...Je suis bloqué T_T
 
Merci et @+
 
P.S: Je fais pas un logiciel peertopeer alors vous trompez pas dans ma question c'est juste pour récup des fichiers text de 30 kilos max ^_^

Reply

Marsh Posté le 13-06-2005 à 10:18:57   

Reply

Marsh Posté le 13-06-2005 à 11:11:38    

Bon on m'a parlé de requête par le protocole http donc je vais m'orienter dessus.
Merci quand même

Reply

Marsh Posté le 13-06-2005 à 12:12:32    

je pense que les versions récentes de PHP permettent de faire tout bêtement un:
 

Code :
  1. copy('http://mydomain.tld/path/to/file.ext','/path/to/local/file.ext');


 
à vérifier...

Reply

Marsh Posté le 13-06-2005 à 15:41:46    

j'ai essayé ça
copy('http://www.hardware.fr/backend/news.xml','/path/toto/news.xml');
et j'ai eu comme réponse dans le fichier créé cela :
<HTML>
<BODY>
<FONT face=arial size=2>Attention, agent utilisateur du navigateur vide !</FONT>
</BODY>
</HTML>
 
Quelqu'un a une idée

Reply

Marsh Posté le 13-06-2005 à 15:46:10    

pas de chance, le serveur HTTP vérifie l'user-agent
 
seule solution, fsockopen() et requete HTTP à la main, en remplissant bien tous les champs
 
ensuite, tu lis le fluc renvoyé et tu l'écris dans un fichier


---------------
Pour les sudistes :)
Reply

Marsh Posté le 13-06-2005 à 15:47:46    

ok je vais tenter de trouver comment on fait ça merci bien.
affaire a suivre

Reply

Marsh Posté le 13-06-2005 à 15:53:46    

Tu peux modifier le "user-agent" envoyé par PHP avec un  
 

Code :
  1. ini_set('user_agent','[références du client]');

Reply

Marsh Posté le 13-06-2005 à 15:58:14    

e-deby j'ai tenté ta méthode, j'ai codé comme ça:
$fp = fsockopen("http://www.hardware.fr/backend/news.xml", 80, $errno, $errstr, 30);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET / HTTP/1.1\r\n";
   $out .= "Host: http://www.hardware.fr/backend/news.xmlrn";
   $out .= "Connection: Close\r\n\r\n";
 
   fwrite($fp, $out);
   while (!feof($fp)) {
       echo fgets($fp, 128);
   }
   fclose($fp);
}
et j'ai eu le message suivant :
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/html/test/RSS/FileTemp/phprecup.php on line 7
 
Warning: fsockopen(): unable to connect to http://www.hardware.fr/backend/news.xml:80 in /var/www/html/test/RSS/FileTemp/phprecup.php on line 7
Success (0)

Reply

Marsh Posté le 13-06-2005 à 15:58:48    

jeff@be a écrit :

Tu peux modifier le "user-agent" envoyé par PHP avec un  
 

Code :
  1. ini_set('user_agent','[références du client]');



 
tiens, ben j'ai appris un truc aujourd'hui
 
bon, oublies ma méthode celle la est mieux en fait :p


---------------
Pour les sudistes :)
Reply

Marsh Posté le 13-06-2005 à 15:59:26    

Jeff@be ta solution marche merci bien, je passe outre le user agent
thx
merci a toi aussi e-deby


Message édité par rouanelion le 13-06-2005 à 16:02:05
Reply

Marsh Posté le 13-06-2005 à 15:59:26   

Reply

Marsh Posté le 13-06-2005 à 16:16:50    

rouanelion a écrit :

e-deby j'ai tenté ta méthode, j'ai codé comme ça:
$fp = fsockopen("http://www.hardware.fr/backend/news.xml", 80, $errno, $errstr, 30);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET / HTTP/1.1\r\n";
   $out .= "Host: http://www.hardware.fr/backend/news.xmlrn";
   $out .= "Connection: Close\r\n\r\n";
 
   fwrite($fp, $out);
   while (!feof($fp)) {
       echo fgets($fp, 128);
   }
   fclose($fp);
}
et j'ai eu le message suivant :
Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /var/www/html/test/RSS/FileTemp/phprecup.php on line 7
 
Warning: fsockopen(): unable to connect to http://www.hardware.fr/backend/news.xml:80 in /var/www/html/test/RSS/FileTemp/phprecup.php on line 7
Success (0)


Pour infos le code correct a priori :

Code :
  1. $fp = fsockopen("www.hardware.fr", 80, $errno, $errstr, 30);
  2. if (!$fp) {
  3.    echo "$errstr ($errno)<br />\n";
  4. } else {
  5.    $out = "GET /backend/news.xml HTTP/1.1\r\n";
  6.    $out .= "Host: www.hardware.frrn";
  7.    $out .= "Connection: Close\r\n\r\n";
  8.    fwrite($fp, $out);
  9.    while (!feof($fp)) {
  10.        echo fgets($fp, 128);
  11.    }
  12.    fclose($fp);
  13. }

Et il manquait aussi la définition du user-agent dans ta requete HTTP que tu construis.


Message édité par ratibus le 13-06-2005 à 16:23:49
Reply

Marsh Posté le 13-06-2005 à 16:20:47    

merci de l'info ratibus ^^

Reply

Marsh Posté le 13-06-2005 à 17:01:16    

[:drapo]


---------------

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed