如何检查pdf文件是否存在?

时间:2015-09-30 05:49:01

标签: javascript php jquery pdf

我正在尝试检查arXiv中是否存在pdf文件。有两个例子

  

arxiv.org/pdf/1207.4102.pdf

     

arxiv.org/pdf/1207.41021.pdf

第一个是pdf文件,第二个不是,返回error page

有没有办法检查网址是否为pdf。我尝试了How do I check if file exists in jQuery or JavaScript?中的答案,但是它们都没有工作,并且它们对于两个URL都返回true(即文件存在)。有没有办法在JavaScript / jQuery甚至PHP中找到哪个url是pdf文件?

可以使用pdf.js解决这个问题吗?

4 个答案:

答案 0 :(得分:0)

  

您可以尝试使用此代码来检查Url是否存在远程服务器文件

 $filename= 'arxiv.org/pdf/1207.4102.pdf';
    $file_headers = @get_headers($filename);

    if($file_headers[0] == 'HTTP/1.0 404 Not Found'){
          echo "The file $filename does not exist";
    } else if ($file_headers[0] == 'HTTP/1.0 302 Found' && $file_headers[7] == 'HTTP/1.0 404 Not Found'){
        echo "The file $filename does not exist, and I got redirected to a custom 404 page..";
    } else {
        echo "The file $filename exists";
    }

答案 1 :(得分:0)

您可能需要使用curl并检查200 http status code,即:

<?php

$url = 'http://arxiv.org/pdf/1207.41021.pdf';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);    // we want headers
curl_setopt($ch, CURLOPT_NOBODY, true);    // we don't need body
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); // we follow redirections
curl_setopt($ch, CURLOPT_TIMEOUT,10);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);


if($httpcode == "200"){
    echo "file exist";
}else{
    echo "doesn't exist";
}

两个pdf文件都返回403 Forbidden

  

服务器理解请求,但拒绝履行请求。   授权无效,请求不应重复。如果   请求方法不是HEAD,服务器希望公开   为什么请求没有得到满足,它应该描述原因   因为该实体的拒绝。如果服务器不想做   此信息可供客户使用,状态代码404(不是   找到了)可以代替使用。

答案 2 :(得分:0)

返回正确的结果。

function getHTTPCode($url) {

    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, true);   
    curl_setopt($ch, CURLOPT_NOBODY, true);   
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT,10);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)');
    $output = curl_exec($ch);
    $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $httpcode;

}

$url = 'http://arxiv.org/pdf/1207.41021.pdf';
if(getHTTPCode($url)==200) {
 echo  'found';
} else {
 echo  'not found';
}

答案 3 :(得分:-2)

使用PHP,您可以检查文件是否存在http://php.net/manual/en/function.file-exists.php

对于远程文件,请检查请求https://stackoverflow.com/a/8139136/3222087

上的标题