首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能用`CURLINFO_CONTENT_LENGTH_DOWNLOAD`在php_curl中获取iso文件的长度?

为什么不能用`CURLINFO_CONTENT_LENGTH_DOWNLOAD`在php_curl中获取iso文件的长度?
EN

Stack Overflow用户
提问于 2015-05-30 22:44:12
回答 1查看 821关注 0票数 2

我想在网上得到iso文件的长度。

http://cdimage.debian.org/debian-cd/8.0.0/i386/iso-cd/debian-8.0.0-i386-lxde-CD-1.iso

代码语言:javascript
复制
<?php
    $szUrl = 'http://cdimage.debian.org/debian-cd/8.0.0/i386/iso-cd/debian-8.0.0-i386-lxde-CD-1.iso';
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $szUrl);
    curl_setopt($curl, CURLOPT_HEADER, 1);
    curl_setopt($curl, CURLOPT_NOBODY, 1);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $size = curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
    echo $size;
?>

输出的代码是-1,如何使用php_curl正确地获得iso文件的长度?

对于Leggendario的回答,我问题的关键是设置CURLOPT_FOLLOWLOCATION以获得正确的答案。

这使得我的问题不同于http://stackoverflow.com/questions/2602612/php-remote-file-size-without-downloading-file

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-30 23:00:05

来自文档

CURLINFO_CONTENT_LENGTH_DOWNLOAD 传递一个指向“双”的指针以接收下载的内容长度。这是从内容长度:字段读取的值。从7.19.4开始,如果不知道大小,则返回1。

您必须首先执行curl:

代码语言:javascript
复制
curl_exec($curl);

$size = curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
echo $size;

curl_close($curl);

但是要小心,因为http://cdimage.debian.org/debian-cd/8.0.0/i386/iso-cd/debian-8.0.0-i386-lxde-CD-1.iso只是重定向到http://gensho.acc.umu.se/debian-cd/8.0.0/i386/iso-cd/debian-8.0.0-i386-lxde-CD-1.iso。您可能希望将CURLOPT_FOLLOWLOCATION设置为true。

代码语言:javascript
复制
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

否则,您将得到重定向页的大小。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30552087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档