PHP Dateigrößer externer PDF-Datei ermitteln

ccman

Cadet 3rd Year
Dabei seit
Jan. 2012
Beiträge
53
Gibt es eine Möglichkeit, die Dateigröße einer extern liegenden PDF-Datei zu ermitteln, ohne die PDF-Datei runterladen zu müssen?

Ich möchte eigentlich nur testen, ob einige PDF-Links funktionieren oder ob sie einen Fehler 404 ausgeben. Oder vielleicht gibt es dafür eine einfachere Möglichkeit.
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.992
Hi,

wenn es nur um die Funktion der Links geht ist die Größe der PDF-Datei doch vollkommen egal, oder verstehe ich da etwas falsch? Einfach gucken, ob du bei einem Aufruf als Antwort 404 kriegst reicht doch in dem Fall aus. Wenn du keinen Error kriegst funktioniert der Link.

Oder verstehe ich das Problem gerade falsch? :)

VG,
Mad
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.992
Hi,

@bruteforce9860

File Exists geht aber nur mit lokalen Dateien und nicht mit URLs oder irre ich? Wenn er also testen will, ob eine Verlinkung auf einen fremden Server funktioniert klappt das damit erstmal nicht.

Wenn dann müsste man eine Methode benutzen wie

Code:
<?php
function url_exists($url) {
    // Version 4.x supported
    $handle   = curl_init($url);
    if (false === $handle)
    {
        return false;
    }
    curl_setopt($handle, CURLOPT_HEADER, false);
    curl_setopt($handle, CURLOPT_FAILONERROR, true);  // this works
    curl_setopt($handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") ); // request as if Firefox   
    curl_setopt($handle, CURLOPT_NOBODY, true);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, false);
    $connectable = curl_exec($handle);
    curl_close($handle);  
    return $connectable;
}
VG,
Mad
 

Enigma

Captain
Dabei seit
Apr. 2004
Beiträge
3.174
Du musst einen HTTP-Head request abschicken und nicht die ganze PDF-Datei vom Server runterladen wie Madman1209 es beschreibt.

z.B.
telnet server port
Code:
HEAD /datei.pdf HTTP/1.1
Host: www.server.name
Connection: close
Dann kommt in den Attributen der ETAG und Content-Length zurück.
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.636
Entweder den 404 HTTP Status abfragen oder den Response Header auswerten (Content-length).
 
Top