从HTTP头中检索文件大小而不用CURL(无头文件)下载文件

我想要做的是知道文件大小,而不是下载它。 我已经用HEAD尝试过,但服务器不响应curl_setopt($ curl,CURLOPT_NOBODY,true); 如果我放弃这个,它会,但它会下载整个文件…

所以,如果我能以某种方式告诉curl,最大接收的数据不应该通过某些字节,并停止或超时,不要等到整个文件被下载,

在正常下载中:

GET /filepath HTTP/1.1 Host: host.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive 

响应标题

 HTTP/1.0 200 OK Server: Apache/ (Debian GNU/Linux) PHP/ Content-Type: application/octet-stream ETag: "MFFPJ28A" Content-Length: 3342417 Content-Disposition: attachment Cache-Control: private Content-Transfer-Encoding: binary Accept-Ranges: bytes 

FILE_CONTENTS_FOLLOWING

我试图指定范围从0到100例如,但后来我得到Content-Length:101所以没有在那里使用…

找出你的服务器为什么不响应HEAD请求。 这正是HEAD请求的目的:-)

另一个select是开始获取文件,然后杀死连接。

你是从PHP调用curl吗? 在callback函数中,您可以收到标题,然后停止。

您可以使用curl_setopt (选项CURLOPT_HEADERFUNCTION来定义这种callback。

尝试在这个函数中使用curl_close来停止传输。 但是我没有testing这个。