2

可能重复:
在 PHP 中测试 404 的 URL 的简单方法?

我正在使用 curl 从 PHP 后端下载一系列 pdf。我不知道序列何时结束,如 1.pdf、2.pdf ......等。

以下是我用来下载 pdf 的代码:

$url  = 'http://<ip>.pdf';
    $path = "C:\\test.pdf";
 
    $fp = fopen($path, 'w');
 
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FILE, $fp);
 
    $data = curl_exec($ch);
    
    fclose($fp);

但是我如何确定该 pdf 在后端不存在?找不到文件时 curl 是否返回任何响应?

4

2 回答 2

2
$ch=curl_init("www.example.org/example.pdf");
curl_setopt($ch,CURLOPT_HEADER,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result=curl_exec($ch);
curl_close($ch);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);它将在成功时返回结果,在失败时返回 FALSE 。

curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);它将在成功时返回 TRUE 或在失败时返回 FALSE 。

此外,对于file not found

$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($http_code == 404)
{
  /*file not found*/
}
于 2013-01-24T15:03:40.473 回答
1

只需在之后测试http响应的statut代码$data = curl_exec($ch);

$http_status = curl_getinfo($url, CURLINFO_HTTP_CODE);
if($http_status == '404') {

   //not found, -> file doesnt exist in your backend
}

更多信息在这里

于 2013-01-24T15:00:13.923 回答