[ PHP ] - Trouver la taille d'un fichier distant

- Trouver la taille d'un fichier distant [ PHP ] - PHP - Programmation

Marsh Posté le 15-04-2002 à 15:10:51    

Bonjour je voudrais savoir s'il est possible de faire un script qui arrive a voir la taille d'un fichier stocké sur un autre serveur! Explorer le fait bien alors pq pas php !
 
filesize() a marche po.
 
Y a t'il d'autres solutions??
 
Merci

Reply

Marsh Posté le 15-04-2002 à 15:10:51   

Reply

Marsh Posté le 15-04-2002 à 15:18:59    

>> Explorer le fait bien alors pq pas php !
 
ie le sait car il commence à downloader le fichier :
 
GET répertoire/fichier.ext HTTP/1.0
Host: www.server.com
 
et le serveur répond :
 
HTTP/1.0 200 OK
Content-Length: 45787
 
et hop. tu peux ouvrir une socket, faire une requête HTTP, et lire suffisamment d'octets (~512) pour avoir le champ qui spécifie la taille.

Reply

Marsh Posté le 15-04-2002 à 15:19:39    

ya pa sizeof(file(chemin))?

Reply

Marsh Posté le 15-04-2002 à 15:22:32    

youdontcare et comment faire ca avec php??

Reply

Marsh Posté le 15-04-2002 à 15:26:31    

http://www.php.net/manual/en/function.fsockopen.php
 
-> regarde l'exemple.  
 
(y'a aussi http://www.php.net/manual/en/ref.sockets.php pour de la comm plus générale).

Reply

Marsh Posté le 15-04-2002 à 15:45:55    

Meric j'ai mattez cette doc mais je suis pas assez bon pour  tout comprendre... si c pas trop demander tu pourrais me faire un ptit exemple pour avoir la taille du fichier???  
merci..

Reply

Marsh Posté le 15-04-2002 à 15:50:14    

1) tu recopies l'exemple
2) tu remplaces le nom du serveur, le nom du fichier par ton serveur, ton fichier
3) au lieu de faire un while (!feof(...)) + fgets(...) pour récupérer le fichier, tu fais un fgets(..., 512) (512 = par exemple)
4) tu affiches ce que tu obtiens
5) séparés par des retours à la ligne (\r\n), tu auras les lignes du header
6) sur une de ces lignes, le champ Content-Length
7) pour l'extraire, tu peux utiliser strstr("Content-Length" )
8) tu extrais ça avec la méthode de ton choix (eplode, regexp, etc.)

Reply

Marsh Posté le 15-04-2002 à 15:59:59    

Merci j'vais essayer  
tkx

Reply

Marsh Posté le 15-04-2002 à 16:05:52    

<?php
$fp = fsockopen ("www.francozone.com", 80, $errno, $errstr, 30);
$fichier = "http://www.francozone.com/pictures/francologo.jpg";
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs ($fp, "GET / HTTP/1.0\r\nHost: www.example.comrnrn" );
    fgets($fichier, 512)
    fclose ($fp);
}
?>
 
jai fait ca mais parse error at line 9  
 
je comprend pas trop comment recuperer la taille du fichier avec ca...

Reply

Marsh Posté le 15-04-2002 à 16:07:05    

pourle parse error ct un ; manquant mais now jai ca  
 
 
Warning: Supplied argument is not a valid File-Handle resource in /u/ipmedia/MULTI/netsexy/public_html/test.php on line 8

Reply

Marsh Posté le 15-04-2002 à 16:07:05   

Reply

Marsh Posté le 15-04-2002 à 16:11:31    

* tu dois spécifier dans le GET le chemin du fichier  
 
fputs ($fp, "GET /pictures/francologo.jpg HTTP/1.0\r\nHost: www.example.comrnrn" );  
 
dans l'exemple, / renvoie le fichier par défaut situé à la racine du site.
 
* fgets($fichier, 512)  
 
non. relis l'exemple, tu dois passer $fp à fgets(), qui renvoie le buffer qu'il a lu.
 
$fichier = fgets($fp, 512);
 
* ton affectation $fichier = .... au début ne sert à rien.

Reply

Marsh Posté le 15-04-2002 à 16:16:53    

Je dois etre con car je comprends de moins en moins...
pourrais tu m'ecrire le script comme il faut??? car je galere grave la sinon tant pis j'abandonne :(
merci k meme

Reply

Marsh Posté le 15-04-2002 à 16:21:25    

je n'ai pas dit grand chose d'autre que "remplace ça par ça", alors ... va dormir et remets-toi là-dessus demain.

Reply

Marsh Posté le 15-04-2002 à 16:22:24    

c pas ca mais la plupartdes commande utiliser je les connais pas je c pas koi fait koi je suis un peu perdu c tt j'y arrive pas tant pis a+

Reply

Marsh Posté le 15-04-2002 à 16:33:55    

raaaah ! c'est pourtant pas bien compliqué ! si qq chose te bloque, cherche !
 
<?php  
$fp = fsockopen ("www.francozone.com", 80, $errno, $errstr, 30);  
$buffer = '';
 
if (!$fp) {  
   echo "$errstr ($errno)<br>\n";  
} else {  
   fputs ($fp, "GET /pictures/francologo.jpg  HTTP/1.0\r\nHost: www.example.comrnrn" );  
   $buffer = fgets($fp, 512)  
   fclose ($fp);  
 
   // là tu as les headers http dans $buffer
   echo $buffer;
   // tu devrais voir un champ Content-Length à l'écran.
   // il suffit juste d'extraire la valeur située après le champ ...
}  
?>

Reply

Marsh Posté le 15-04-2002 à 16:44:09    

Pour toi c super simple pour moi c compliquer jai jamais toucher a ce genre de methodes...
chercher c'est ce que je fait depuis 3  heures  
bref merci ... et a+

Reply

Marsh Posté le 15-04-2002 à 16:46:49    

Ca dit ceci : HTTP/1.1 404 Not Found  
pourtant l'image existe

Reply

Marsh Posté le 15-04-2002 à 16:46:57    

SquiiiD a écrit a écrit :

Pour toi c super simple pour moi c compliquer jai jamais toucher a ce genre de methodes...


le truc rigolo, c'est que je n'ai _jamais_ utilisé fsockopen() ou fgets() !
 
(mais ok, je m'y connais en http :D)

Reply

Marsh Posté le 15-04-2002 à 16:48:14    

c t le www;exemple.com ki foirait jai rempalcer et ca va mais maintnant je vosi ca :  
 
HTTP/1.1 200 OK  
 
ou se trouve la taille?

Reply

Marsh Posté le 15-04-2002 à 16:55:44    

haaa au temps pour moi fgets() lit ligne par ligne :)
 
remplace
 
$buffer = fgets($fp, 512);  
 
par
 
$buffer = fread($fp, 512);

Reply

Marsh Posté le 15-04-2002 à 16:58:00    

bon ben nickel ca marche...
desolé de tavoir ennuyé.. a+ et merci encore

Reply

Marsh Posté le 15-04-2002 à 17:00:19    

:hello:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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