我想在网上得到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。
发布于 2015-05-30 23:00:05
来自文档
CURLINFO_CONTENT_LENGTH_DOWNLOAD 传递一个指向“双”的指针以接收下载的内容长度。这是从内容长度:字段读取的值。从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只是重定向到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);否则,您将得到重定向页的大小。
https://stackoverflow.com/questions/30552087
复制相似问题