我想要做的是知道文件大小但不下载它。我尝试使用 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
文件内容如下
我尝试指定从 0 到 100 的范围,但是我得到 Content-Length: 101,所以没有用...
答案1
找出你的服务器不响应 HEAD 请求的原因。这正是 HEAD 请求的目的 :-)
另一种选择是开始获取文件,然后终止连接。
您是从 PHP 调用 curl 吗?在回调函数中,您可以接收标头然后停止。
curl_setopt
您可以使用, 选项定义这样的回调CURLOPT_HEADERFUNCTION
。
尝试在此函数中使用 curl_close 来停止传输。但我没有测试过。