Php 使用内容处置查看文件内容:使用套接字查看附件

Php 使用内容处置查看文件内容:使用套接字查看附件,php,content-disposition,fsockopen,Php,Content Disposition,Fsockopen,我想解析动态.csv文件的内容。但是,这段代码(显然带有无用的文件名等): …只需下载文件 使用命令行上的openssl,我可以键入完全相同的请求并返回以下响应头: HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-disposition: attachment; filename=dynamicCsv.csv Pragma: public Cache-Control: max-age=0 Set-Cookie: SESSIONID=ASDFUH

我想解析动态.csv文件的内容。但是,这段代码(显然带有无用的文件名等):

…只需下载文件

使用命令行上的openssl,我可以键入完全相同的请求并返回以下响应头:

HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-disposition: attachment; filename=dynamicCsv.csv
Pragma: public
Cache-Control: max-age=0
Set-Cookie: SESSIONID=ASDFUHN023UIN0F; Path=/; Secure
Content-Type: text/csv;charset=UTF-8
Transfer-Encoding: chunked
Date: Thu, 04 Feb 2010 16:53:00 GMT
为了避免自动下载文件,我尝试使用
substr
切掉第一个字符,希望浏览器能将
fgets
的响应输出视为当前文档的一组标题。那没用。出于同样的想法,我还尝试在打开套接字之前插入一堆新行,但也没有成功

我的两个问题是:

  • 究竟为什么浏览器认为应该下载该文件
  • 我怎样才能阻止它
  • 我应该提到的是,到目前为止我只使用了Chrome,但我不明白为什么它会有什么不同

    非常感谢,,
    安德烈亚斯

    你可以考虑使用或使用它。

    你可以考虑使用或使用它。

    ,好吧,实际上我自己解决了。作为参考,我没有删除这个问题,而是添加了这个带有修复的响应

    问题在于

    fsockopen("www.example.com", 443);
    
    我没有指定使用ssl协议。因此,解决方法是键入:

    fsockopen("ssl://www.example.com", 443);
    

    好吧,实际上我自己解决了。作为参考,我没有删除这个问题,而是添加了这个带有修复的响应

    问题在于

    fsockopen("www.example.com", 443);
    
    我没有指定使用ssl协议。因此,解决方法是键入:

    fsockopen("ssl://www.example.com", 443);
    

    当脚本运行时,它不会输出任何内容,因为它会被下载文件对话框中断?对吗?事实上,我想我在Chrome中遇到了一个相当奇怪的行为。它只下载我想要输出的文件。如果我在打开套接字并发出请求之前回显了任何内容,它将按预期在屏幕上回显。然而,在Firefox中,在不指定ssl的情况下,只输出几个非ascii字符,在端口80上进行nc操作时,结果相同。Chrome似乎可以单独解析套接字响应,智能程度足以在同一文档上处理两个协议(http和https)。可能值得进行更彻底的调查。当脚本运行时,它不会输出任何内容,因为它会被“下载文件”对话框中断?对吗?事实上,我想我在Chrome中遇到了一个相当奇怪的行为。它只下载我想要输出的文件。如果我在打开套接字并发出请求之前回显了任何内容,它将按预期在屏幕上回显。然而,在Firefox中,在不指定ssl的情况下,只输出几个非ascii字符,在端口80上进行nc操作时,结果相同。Chrome似乎可以单独解析套接字响应,智能程度足以在同一文档上处理两个协议(http和https)。可能值得更彻底的调查。