Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1999 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°126045
SquiiiD
be cool !
Posté le 15-04-2002 à 15:10:51  profilanswer
 

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

mood
Publicité
Posté le 15-04-2002 à 15:10:51  profilanswer
 

n°126050
youdontcar​e
Posté le 15-04-2002 à 15:18:59  profilanswer
 

>> 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.

n°126051
goueg
De passage
Posté le 15-04-2002 à 15:19:39  profilanswer
 

ya pa sizeof(file(chemin))?

n°126053
SquiiiD
be cool !
Posté le 15-04-2002 à 15:22:32  profilanswer
 

youdontcare et comment faire ca avec php??

n°126060
youdontcar​e
Posté le 15-04-2002 à 15:26:31  profilanswer
 

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).

n°126094
SquiiiD
be cool !
Posté le 15-04-2002 à 15:45:55  profilanswer
 

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..

n°126098
youdontcar​e
Posté le 15-04-2002 à 15:50:14  profilanswer
 

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.)

n°126114
SquiiiD
be cool !
Posté le 15-04-2002 à 15:59:59  profilanswer
 

Merci j'vais essayer  
tkx

n°126117
SquiiiD
be cool !
Posté le 15-04-2002 à 16:05:52  profilanswer
 

<?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...

n°126120
SquiiiD
be cool !
Posté le 15-04-2002 à 16:07:05  profilanswer
 

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

mood
Publicité
Posté le 15-04-2002 à 16:07:05  profilanswer
 

n°126131
youdontcar​e
Posté le 15-04-2002 à 16:11:31  profilanswer
 

* 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.

n°126135
SquiiiD
be cool !
Posté le 15-04-2002 à 16:16:53  profilanswer
 

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

n°126136
youdontcar​e
Posté le 15-04-2002 à 16:21:25  profilanswer
 

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

n°126138
SquiiiD
be cool !
Posté le 15-04-2002 à 16:22:24  profilanswer
 

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+

n°126155
youdontcar​e
Posté le 15-04-2002 à 16:33:55  profilanswer
 

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 ...
}  
?>

n°126170
SquiiiD
be cool !
Posté le 15-04-2002 à 16:44:09  profilanswer
 

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+

n°126175
SquiiiD
be cool !
Posté le 15-04-2002 à 16:46:49  profilanswer
 

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

n°126176
youdontcar​e
Posté le 15-04-2002 à 16:46:57  profilanswer
 

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)

n°126178
SquiiiD
be cool !
Posté le 15-04-2002 à 16:48:14  profilanswer
 

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?

n°126185
youdontcar​e
Posté le 15-04-2002 à 16:55:44  profilanswer
 

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

n°126190
SquiiiD
be cool !
Posté le 15-04-2002 à 16:58:00  profilanswer
 

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

n°126194
youdontcar​e
Posté le 15-04-2002 à 17:00:19  profilanswer
 

:hello:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
[PHP] Faire connaître son application distribuée[PHP]depasser la limite en upload
[PHP] ascii ---> caractere html[PHP] Session + free.fr
Question PHP debutant[PHP] Expression reguliere
[Javascript + PHP] Arreter l'interpretation d'un script PHP[PHP] Testez si une valeur est divisible par 4
PHP --> Pb avec ini.include_path[PHP] - Choix de nombres aleatoire tous different !?
Plus de sujets relatifs à : [ PHP ] - Trouver la taille d'un fichier distant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR