当响应是内容处置:附件时,似乎无法使用PHP Curl下载CSV

时间:2011-06-05 00:39:24

标签: php http curl

我正在尝试使用PHP Curl从URL下载CSV文件,但Curl响应是页面的HTML,而不是CSV。我该如何解决这个问题?

我尝试过匹配referer和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 个答案:

答案 0 :(得分:3)

我认为您正在寻找的选项是 -J

来自http://curl.haxx.se/docs/manpage.html#-J

  

-J, - remote-header-name

     

(HTTP)此选项告诉-O, - remote-name选项使用   服务器指定的Content-Disposition文件名而不是提取   来自网址的文件名。

答案 1 :(得分:1)

尝试使用curl -L -O http://example.com/filename.csv

这是一个资本o,而不是零。这告诉curl遵循任何重定向并使用content-disposition标题中的文件名。