cURL无法获取特定PDF的文件大小

时间:2014-05-07 22:19:24

标签: php pdf curl

我有一个脚本,它使用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);

2 个答案:

答案 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']

这与远程服务器发送的内容无关,它是以字节为单位的测量文件大小。