我想在网上获取iso文件的长度
http://cdimage.debian.org/debian-cd/8.0.0/i386/iso-cd/debian-8.0.0-i386-lxde-CD-1.iso
<?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
不同。
答案 0 :(得分:1)
<强> CURLINFO_CONTENT_LENGTH_DOWNLOAD 强>
将指针传递给double以接收内容的长度 下载。这是从Content-Length:字段读取的值。以来 7.19.4,如果大小未知,则返回-1。
您必须先执行curl:
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 < / em>只是重定向到 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。
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
否则,您将获得重定向页面的大小。