从 HTTP 标头中检索文件大小,而无需使用 CURL 下载文件(无 HEAD)

从 HTTP 标头中检索文件大小,而无需使用 CURL 下载文件(无 HEAD)

我想要做的是知道文件大小但不下载它。我尝试使用 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 来停止传输。但我没有测试过。

相关内容