我正在尝试检查arXiv中是否存在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解决这个问题吗?
答案 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
上的标题