我有一个脚本,它使用cURL来检查一堆PDF的文件大小。除了使用一个特定的PDF之外,它的效果很好。对于这一个PDF,它告诉我文件大小为-1。 PDF格式为https://www.panerabread.com/content/dam/panerabread/documents/nutrition/Panera-Nutrition.pdf
这是我的代码:
$ch = curl_init($pdf_url);
$fh = fopen('/dev/null', 'w');
curl_setopt($ch, CURLOPT_FILE, $fh);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
// Execute
curl_exec($ch);
// Check if any error occured
if(!curl_errno($ch))
{
$info = curl_getinfo($ch);
$size=$info['download_content_length'];
}
else echo'error!';
// Close handle
curl_close($ch);
答案 0 :(得分:0)
以前曾经问过这个问题。我发现这个和其他一些答案搜索谷歌“download_content_length是负面的”:
curl_getinfo returning -1 as content-length
显然,如果服务器没有设置Content-Length标头,那么你将获得-1。您是否尝试在下载PDF时查看响应标题?
编辑:我检查过并且没有在服务器的响应中设置Content-Length标头。
您始终可以将文件下载到临时位置,并使用filesize
功能
答案 1 :(得分:0)
如果在“计算”字段时出现问题,该字段将包含-1
。此特定文件的问题是服务器发送错误的Content-Length
标头。标题显示112189
个字节,其中下载文件的实际大小为144418
个字节。
我建议使用
$info['size_download']
这与远程服务器发送的内容无关,它是以字节为单位的测量文件大小。