Не получается загрузить CSV с помощью PHP Curl, когда ответом является расположение содержимого: вложение - PullRequest
1 голос
/ 05 июня 2011

Я пытаюсь загрузить файл CSV с URL-адреса, используя PHP Curl, но ответ Curl - это HTML-код страницы, а не CSV.Как это исправить?

Я попытался сопоставить реферер и user-agent.

Спасибо!

Вот рабочий запрос в firefox:

GET [someURL] HTTP/1.1
Host: [someHost]
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13
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
Referer: [someReferer]
Cookie: [some cookie data, including jsession]

и вот ответ:

HTTP/1.1 200 OK
Content-Type: text/csv
Date: Sun, 05 Jun 2011 00:33:21 GMT
Expires: Sun, 05 Jun 2011 00:34:21 GMT
Content-Disposition: attachment; filename=[some file name.csv]
Connection: Keep-Alive
Last-Modified: Sun, 05 Jun 2011 00:33:21 GMT
X-Powered-By: Servlet/2.5 JSP/2.1
Content-Length: 5012

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Я думаю, что вам нужен вариант -J :

От http://curl.haxx.se/docs/manpage.html#-J:

-J,--remote-header-name

(HTTP) Этот параметр указывает опции -O, --remote-name использовать указанное сервером имя файла Content-Disposition вместо извлечения имени файла из URL.

1 голос
/ 05 июня 2011

Попробуйте использовать curl -L -O <a href="http://example.com/filename.csv" rel="nofollow">http://example.com/filename.csv</a>

Это заглавная буква o, а не ноль. Это заставляет curl следовать любым перенаправлениям и использовать имя файла из заголовка content-disposition.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...