Назад | Перейти на главную страницу

получить размер файла из заголовков 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

FILE_CONTENTS_FOLLOWING

Я попытался указать диапазоны от 0 до 100, например, но потом я получил Content-Length: 101, так что бесполезно ...

Узнайте, почему ваш сервер не отвечает на запрос HEAD. Это как раз цель запроса HEAD :-)

Другой вариант - начать выборку файла, а затем просто отключить соединение.

Вы вызываете curl из PHP? В функции обратного вызова вы можете получить заголовок, а затем остановиться.

Вы можете определить такой обратный вызов с помощью curl_setopt, вариант CURLOPT_HEADERFUNCTION.

Попробуйте использовать curl_close в этой функции, чтобы остановить передачу. Но я этого не проверял.