動的 .csv ファイルの内容を解析したいと考えています。ただし、このコード (明らかに duff ファイル名など):
$socket = fsockopen("www.example.com", 443);
fwrite($socket, "GET /dynamicCsv.csv?param=value HTTP/1.1\r\n");
fwrite($socket, "Host: www.example.com\r\n");
fwrite($socket, "Connection: close\r\n");
fwrite($socket, "\r\n");
while(!feof($socket)) echo fgets($socket);
...ファイルをダウンロードするだけです。
コマンド ラインで 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
れた応答を現在のドキュメントの一連のヘッダーとして認識できるようにするためです。それはうまくいきませんでした。同じ考えを追求して、ソケットを開く前にたくさんの改行を挿入しようとしましたが、どちらもうまくいきませんでした。
私の2つの質問は次のとおりです。
- ブラウザがファイルをダウンロードする必要があると考える理由は何ですか?
- どうすればそれを止めることができますか?
私はこれまで Chrome しか使っていませんでしたが、なぜそれが違いを生むのかわかりません。
どうもありがとう、アンドレアス