Я хочу знать размер файла и не скачивать его. Я пробовал это с 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 :-)
Другой вариант - начать выборку файла, а затем просто отключить соединение.
Вы вызываете curl из PHP? В функции обратного вызова вы можете получить заголовок, а затем остановиться.
Вы можете определить такой обратный вызов с помощью curl_setopt
, вариант CURLOPT_HEADERFUNCTION
.
Попробуйте использовать curl_close в этой функции, чтобы остановить передачу. Но я этого не проверял.