Remote-Datei-Größe ohne Download-Datei
Ist es ein Weg, um die Größe des remote-Datei http://my_url/my_file.txt ohne die Datei zu laden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es ein Weg, um die Größe des remote-Datei http://my_url/my_file.txt ohne die Datei zu laden?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Etwas gefunden über diese hier:
Verwendung:
curl_getinfo
wie @macki schlägt?get_user_agent_string()
wurde nicht definiert. Entfernen der gesamten Zeile machte die ganze Arbeit.http://www.dailymotion.com/rss/user/dialhainaut/
sehen SO aus: stackoverflow.com/questions/36761377/...Versuchen, diesen code
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
.CURLOPT_FOLLOWLOCATION
auf true gesetzt.ch
stehen? Kanal?Als ein paar mal erwähnt, den Weg zu gehen, ist das abrufen der Informationen aus der response-header ist
Content-Length
Feld.Allerdings sollten Sie beachten, dass
fopen
oder gleichermaßen oder sogar zu berufen, die curl-Bibliothek, als PHP, hatget_headers()
(Sie erinnern sich: K. I. S. S.)Verwendung von
get_headers()
folgt die K. I. S. S. Prinzip und funktioniert auch, wenn der server, den Sie Sondieren nicht unterstützt HEAD-request.So, hier ist meine version (gimmick: gibt lesbare formatierte Größe ;-)):
Kern: https://gist.github.com/eyecatchup/f26300ffd7e50a92bc4d (curl und get_headers-version)
get_headers()-Version:
Verwendung:
Zusätzlicher Hinweis: Der Content-Length-header ist optional. So, wie in der Allgemeinen Lösung es ist nicht bullet proof!
Content-Length
ist optional, aber es ist der einzige Weg, um die Dateigröße ohne Download - undget_headers
ist der beste Weg, umcontent-length
.stream_context_create
erstellen Sie einen separaten Kontext für den Anruf zuget_headers
(7.1+).Sicher. Stellen Sie eine Header-only-Anfrage und suchen Sie die
Content-Length
header.Php-Funktion
get_headers()
für mich arbeitet und überprüfen Sie die content-length alsWeitere Details : PHP-Funktion get_headers()
Ich bin mir nicht sicher, aber konnte Sie nicht verwenden, die get_headers Funktion für diese?
Die einfachste und effizienteste Implementierung:
Content-Length
header. Und explizite$fp
schließen ist NICHT ERFORDERLICH, es wird automatisch freigegeben, auf abläuft. php.net/manual/en/language.types.resource.phpnc -l localhost 8080
*close
Funktionen sind nicht notwendig in modernen PHP. Sie sind aus zwei historischen Gründen: die Umsetzung Einschränkung und imitiert die C-Sprache.SplFileObject
hat keine Methode zum schließen interne Ressource behandeln. Prozedurale schließen, ist unvereinbar mit der modernen Benutzeroberfläche, die mindestens über streamings.Da diese Frage bereits mit den Tags "php" und "curl" ist, ich nehme an, Sie wissen, wie Sie mit Curl in PHP.
Wenn Sie
curl_setopt(CURLOPT_NOBODY, TRUE)
dann machen Sie eine HEAD-Anforderung und kann wahrscheinlich überprüfen Sie die "Content-Length" - header der Antwort, die nur Kopfzeilen.Versuchen Sie die unter-Funktion, um Remote-Datei-Größe
Meisten Antworten hier verwendet, entweder CURL oder stützend auf das Lesen von überschriften. Aber in einigen Situationen können Sie eine viel einfacher Lösung. Betrachten Sie Hinweis auf
filesize()
's docs auf PHP.net. Sie finden dort einen Tipp zu sagen: "ab PHP 5.0.0 kann diese Funktion auch mit einigen URL-Wrappern. Finden Sie Der unterstützte Protokolle and Wrappers um zu bestimmen, welche Wrapper-support-stat () - Familie von Funktionalität".So, wenn Ihr server und der PHP-parser entsprechend konfiguriert ist, können Sie einfach
filesize()
Funktion, fütterte es mit voller URL, die auf eine remote-Datei, die Größe, die Sie möchten, zu bekommen, und lassen Sie PHP-tun, der alle Magie.Hier ist ein weiterer Ansatz, die Arbeit mit Servern, die nicht unterstützen
HEAD
Anfragen.Es nutzt cURL eine Anfrage für den Inhalt mit HTTP range-header zu Fragen für das erste byte der Datei.
Wenn der server unterstützt range-Anfragen (die meisten Medien-Server), dann erhalten Sie die Antwort mit der Größe der Ressource.
Wenn der server reagiert nicht mit einer byte-Bereich, es wird sich für ein content-length-header zu bestimmen, die Länge.
Wenn die Größe gefunden wird, in einem Bereich oder einer content-length-header, wird die übertragung abgebrochen. Wenn die Größe nicht gefunden und die Funktion liest den response-body, wird die übertragung abgebrochen.
Dies könnte ein ergänzender Ansatz, wenn ein
HEAD
Wunsch die Ergebnisse in einem405
Methode nicht unterstützt Antwort.Verwendung:
einer Linie beste Lösung :
php zu delicius
Versuchen Sie dies: ich benutze es und bekam ein gutes Ergebnis.
Nun, zu testen, wie diese:
Ergebnisse:
24.82 KiB
912 Kb
101.85 KiB