Hallo liebe Leute!
Ich würde ganz gern mal die Dateigrösse herausfinden, in dem ich nur die URL der Datei angebe. Oder muss ich die Datei erst herunterladen? Hab das Gefühl, dass die Funktion filesize() das irgendwie nicht mag, mit URL statt Dateiname.
Wer weiss wie´s geht?
Gruß,
Funny 
Hallo liebe Leute!
Ich würde ganz gern mal die Dateigrösse herausfinden, in dem
ich nur die URL der Datei angebe. Oder muss ich die Datei erst
herunterladen? Hab das Gefühl, dass die Funktion filesize()
das irgendwie nicht mag, mit URL statt Dateiname.
Natuerlich mag filesize das nicht, steht doch auch im Manual - RTFM, mehr als nur eine gute Idee. 
Ich habe eine kleine Funktion fuer Remote Filesize ueber http geschrieben:
function rfilesize($url) {
$info = parse_url($url);
$buf = ‚‘;
if($info[‚scheme‘] != ‚http‘)
return false;
$sock = fsockopen($info[‚host‘], 80, $errno, $errstr, 5);
if(!is_resource($sock))
return false;
$query = sprintf(„HEAD %s HTTP/1.0\r\nHost: %s\r\n\r\n“,
$info[‚path‘], $info[‚host‘]);
fputs($sock, $query);
while(!feof($sock)) {
$buf .= fgets($sock, 1024);
}
fclose($sock);
unset($query);
unset($info);
$check = substr($buf, 0, 16);
if($check != „HTTP/1.1 200 OK“ xor $check != „HTTP/1.0 200 OK“)
return false;
unset($check);
if(preg_match(’#Content-Length: (\d+)#i’, $buf, $matches))
return $matches[1];
else
return false;
}
zum Anwenden echo rfilesize("http://www.wer-weiss-was.de/images/logo.gif");
Danke!
Hi Patrick!
Wow, Herzlichen Danke für die Funktion, werd sie gleich mal testen!
Gruß,
Funny 
P.S.: Das blöde an dem FM ist, dass es keine Fragen beantworten kann.
P.S.: Das blöde an dem FM ist, dass es keine Fragen
beantworten kann.
Man muss nur in die Funktionsdoku von filesize() schauen
ok das müsste man dann halt finden 
Diese Remoteversion hier funktioniert natürlich nur wenn der entsprechende HTTP Header COntent-Length überhaupt gesetzt ist (sonst müsstest du die Datei schon komplett laden und schauen wie groß sie war). Falls du mit der Einschränkung leben kannst, nimm sie 
Doofe Frage: Wofür ist die Dateigröße einer Datei auf einem fremden HTTP Server überhaupt relevant?
Grüße
Bruno
Man muss nur in die Funktionsdoku von filesize() schauen
ok
das müsste man dann halt finden 
Diese Remoteversion hier funktioniert natürlich nur wenn der
entsprechende HTTP Header COntent-Length überhaupt gesetzt ist
(sonst müsstest du die Datei schon komplett laden und schauen
wie groß sie war). Falls du mit der Einschränkung leben
kannst, nimm sie 
Was heisst denn da Einschraenkung? Laut RFC muss ein Server Content-Length bei Dateien mitschicken, insb. bei HTTP 1.1 mit Chunked Transfer geht es ja gar nicht mehr anders. Daher sollte die Funktion eigentlich mit jedem Standard-konformen httpd funktionieren. Der Vorteil der Funkion ist ja gerade eben, dass sie die Groesze herausfindet ohne grossartig alles runterzuladen
.
Bei Mini-Dateien ist das sicher kein Problem, aber finde mal die Groesze von http://progressive1.stream.aol.com/wb/gl/wbonline/pr…
heraus. Das kostet nicht nur Traffic sondern auch Zeit.
Viele Gruesze
Patrick
Bei Mini-Dateien ist das sicher kein Problem, aber finde mal
die Groesze von
http://progressive1.stream.aol.com/wb/gl/wbonline/pr…
heraus. Das kostet nicht nur Traffic sondern auch Zeit.
Das war auch kein ernstgemeinter VOrschlag
Ich wollte nur darauf hinweisen, dass die Funktion nicht unbedingt zuverlässig ist und sich nur begrenzt auf das funktionieren verlassen kann (vor allem bei Webseiten oder Downloads, die dynamisch generiert werden). Kommt eben drauf an was er eigentlich vor hat.
Grüße
Bruno
Bei Mini-Dateien ist das sicher kein Problem, aber finde mal
die Groesze von
http://progressive1.stream.aol.com/wb/gl/wbonline/pr…
heraus. Das kostet nicht nur Traffic sondern auch Zeit.
Das war auch kein ernstgemeinter VOrschlag
Ich wollte nur
darauf hinweisen, dass die Funktion nicht unbedingt
zuverlässig ist und sich nur begrenzt auf das funktionieren
verlassen kann (vor allem bei Webseiten oder Downloads, die
dynamisch generiert werden). Kommt eben drauf an was er
eigentlich vor hat.
In der Tat, bei dynamischen Webseiten funktioniert es nicht, ist aber auch klar, da kann der Webserver ja noch nicht wissen, wie grosz die Ausgabe des Scripts mal wird, aber er sprach ja von Dateien und da funktioniert es eigentlich immer - man koennte die Funktion aber noch dementsprechend erweitern - wenn der 200er Status Code kam, aber kein Content-Length kann er ja immer noch die gesamte Datei laden, dann hat die Funktion das beste aus beiden Welten. 
Nach dem berichtigten Einwand von Bruno habe ich meine Funktion noch ein wenig erweitert… da ich die Art und Weise wie der Source bei WWW kaputt gemacht wird nicht mag kann sie jeder, der Interesse hat unter http://sica.nuxli.de/source/rfilesize.php angucken.
Doofe Frage: Wofür ist die Dateigröße einer Datei auf einem
fremden HTTP Server überhaupt relevant?
Grüße
Bruno
Es geht um die Erweiterung eines PHP-Nuke-Download-Modules, bei dem der Benutzer die Dateigroesse urspruenglich von Hand eingeben muss.
Deine erste Version hat uebrigends schon mal prima funktioniert 
Gruss,
Funny