Dateigröße anhand einer url bestimmen

SpAder

Mitglied
ich code grade ein download-script und dabei sollen in der Datenbank die locations der Dateien als URL angegeben werde. Dadurch kan nich im script dann allerdings recht wenig mit file_exists() und vor allem noch viel weniger mit filesize() anfangen.
Gibt es ne einigermaßen sinnvolle Möglcihkeit anhand einer Url die Dateigröße eines Files auf einem beliebigen server zu bestimmen?
 
Wenn ich Dich richtig verstehe widerspreche ich Nuinmundo, es geht doch:

http://www.php.net/manual/de/function.readfile.php

Liest den Inhalt einer Datei und schreibt ihn in den Ausgabepuffer.

Gibt die Anzahl der gelesenen Bytes einer Datei zurück. Wenn ein Fehler auftritt wird FALSE zurückgegeben und eine Fehlermeldung wird auf der Standardausgabe ausgegeben. Die Ausgabe einer Fehlermeldung kann durch Voranstellen eines '@' verhindert werden (@readfile).

Mußt halt nur noch den kram ggf. in MB umrechnen, aber das ist kein Problem.

P.S.: Natürlich muss die Serverconfig Zugriff über URL erlauben (open_wrappers).
 
thx soweit mal, mit readfile geht die ganze sache, aber bei mir wird automatihsc beim funktionsaufruf der inhalt der kompletten Datei die mal mit Readfile einlesen will dargestellt.
 
im manual steht glaube ich wie man das umgehen kann. dazu musst du ein @ vor die funktion schreiben, also $bytes = @readfile($url)

// edit: ok das @ is nur für fehlermeldungen, dann müsstest du die ausgabe mit ob_start(); und ob_end_clean(); unterdrücken:

ob_start();
$bytes = @readfile($url);
ob_end_clean();
 
Zuletzt bearbeitet:
Echo ist in der Funktion eingebaut und läßt sich IMHO nicht abstellen. Eine andere Möglichkeit wäre mit fread zu arbeiten und dann die größe des Strings berechnen zu lassen (eigenet sich nicht für große dateien). Ansonsten sollte wohl auf dem server wo die Dateien liegen ein eigenes PHP-Script sein, das die Dateigröße ausliest und an das abrufende Script ausgibt.

Ist ein schwieriges Thema :(

Weiß jemand eine andere Lösung?
 
neurodeamon: nicht abstellen, aber umgehen wie bei alle ausgaben, die nicht ausgegeben werden sollen (lookup ob_start())
 
Die Dateigröße sollte auch im Header der Serverantwort stehen. Da brauchst du nicht ein Byte der eigentlichen Datei zu übertragen.

Hab aber leider im Moment keine Zeit, da noch mal nachzugucken. Aber wenn du in der Richtung weitersuchen willst, sollte der Hinweis helfen ;).

so long, Fluke
 
Zurück