简体   繁体   中英

Checking if a URL returns a PDF

I need to check if a URL returns a PDF document using PHP. Right now I'm using the file_get_mimetype function. A normal URL( https://www.google.com/ ) returns type as application/octet-stream while a normal pdf link ( http://www.brainlens.org/content/newsletters/Spring%202013.pdf ) returns application/pdf. But now I also encounter URL's like http://www.dadsgarage.com/~/media/Files/example.ashx or http://www.wpdn.org/webfm_send/241 which also is pdf but returns application/octet-stream. There are other URL's too which opens a Save as dialog box which also has to be detected.

Use get_headers()

Eg:

$url = "http://www.dadsgarage.com/~/media/Files/example.ashx";
if (in_array("Content-Type: application/pdf", get_headers($url))) {
    echo "URL returns PDF";
}

print_r(get_headers($url));

returns

Array
(
    [0] => HTTP/1.1 200 OK
    [1] => Cache-Control: private, max-age=604800
    [2] => Content-Length: 194007
    [3] => Content-Type: application/pdf
    [4] => Expires: Tue, 09 Dec 2014 09:40:20 GMT
    [5] => Last-Modified: Wed, 07 Aug 2013 16:46:30 GMT
    [6] => Accept-Ranges: bytes
    [7] => Server: Microsoft-IIS/8.0
    [8] => Content-Disposition: inline; filename="example.pdf"
    [9] => X-AspNet-Version: 4.0.30319
    [10] => X-Powered-By: ASP.NET
    [11] => X-Provider: AWS
    [12] => Date: Tue, 02 Dec 2014 09:40:20 GMT
    [13] => Connection: close
)

MIME类型可以包括:

application/pdf, application/x-pdf, application/acrobat, applications/vnd.pdf, text/pdf, text/x-pdf

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM