PHP Externe Dateigröße auslesen

hab mal im inet ne funktion gefunden, funzt aber auf externen dateien nur wenn die komplett "runtergeladen" werden vom script, das is bei größeren avis aber nich grade schön
 
Sowas suche ich auch seit geraumer zeit bis jetzt nix Konkretes gefunden
 
Hi,

Eine direkte Funktion gibt es dafür glaube ich nicht.
Aber du kannst den Header der Datei nach Content-Length auslesen, und mit dem Rückgabewert hast du dann die größe.

Hier ein paar Zeilen Code: http://de2.php.net/manual/en/function.filesize.php#81906
PHP:
<?php
function urlfilesize($url,$thereturn) {
if (substr($url,0,4)=='http') {
$x = array_change_key_case(get_headers($url, 1),CASE_LOWER);
$x = $x['content-length'];
            }
else { $x = @filesize($url); }
if (!$thereturn) { return $x ; }
elseif($thereturn == 'mb') { return round($x / (1024*1024),2) ; }
elseif($thereturn == 'kb') { return round($x / (1024),2) ; }
}

?>

The example :
<?php
echo urlfilesize('http://www.tayo.fr/remote-irc-tutoriel.php','mb')

?>

Edit:
soll aber wohl net immer 100%tig funktionieren und mal 0byte zurückgeben doerso
Ja, das stimmt. Aber in den meisten fällen sollte es funktionieren ;)

Mfg, Michi.
 
Zuletzt bearbeitet:
man könnte versuchen den http header versuchen auszulesen

edit: @über mir, die funktion habe ich beim googlen auch gefunden, soll aber wohl net immer 100%tig funktionieren und mal 0byte zurückgeben doerso
 
PHP:
<?php
function getSizeFile($url) {

    if (substr($url,0,4)=='http') {

        $x = array_change_key_case(get_headers($url, 1),CASE_LOWER);

        if ( strcasecmp($x[0], 'HTTP/1.1 200 OK') != 0 ) {

        	$x = $x['content-length'][1];

        } else {

            $x = $x['content-length'];

        }

    } else { $x = @filesize($url); }

    return $x;

}

echo getSizeFile("http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.8.tar.bz2");

?>

Bitte, Ai, zu spät!
 
Ja, das mit dem Header hab ich auch schon ausprobiert.

Die Frage ist halt, wie kann ich die Rückgabewerte, bei mir sind die auch 0, oder dann die richtige Dateigröße, nochmals überprüfen, und dann die richtige Dateigröße auslesen.

Ich bräuchte halt einen Code, der immer funktioniert.
 
Clocker 2800+ schrieb:
Ja, das mit dem Header hab ich auch schon ausprobiert.

Die Frage ist halt, wie kann ich die Rückgabewerte, bei mir sind die auch 0, oder dann die richtige Dateigröße, nochmals überprüfen, und dann die richtige Dateigröße auslesen.

Ich bräuchte halt einen Code, der immer funktioniert.

Sorry, aber dann musst du auch mal Eigeninitiative ergreifen und dich mit der Materie intensiver beschäftigen.

Du hast bereits gute Lösungsansätze bekommen. Ein Blick auf php.net und in die Funktions-Liste sollte Dir weitere Lösungsansätze geben.

Zumal Du ja selbst noch fürs Error-Handling sorgen solltest.
 
Zurück
Oben