0

PHP スクリプトが CSV ファイルを生成しています。

ダウンロード リンクをクリックすると、ブラウザがそれを添付ファイルとして扱い、ダウンロード プロンプトを表示するようにします。

これは Firefox では正しく機能しますが、Internet Explorer 8 では CSV ファイルがテキストとして表示されるだけです。

これは、ヘッダーを生成する PHP コードです。

    return new Response( $vOutput, 201, array
        (
        'Content-Encoding' => 'UTF-8',
        'Content-Type' => 'application/octet-stream; charset=UTF-8',
        'Content-Transfer-Encoding' => 'binary',
        'Content-Disposition' => 'attachement; filename="entrance_stats_line' . $vLine . '.csv"',
        'Pragma' => '',
        'Cache-Control' => '',
        'Content-Length' => strlen( $vOutput ),
        'Expires' => '0'
        ) 
    );

(使用されているフレームワークは Silex であり、Symfony の Symfony\Component\HttpFoundation\Response クラスに依存していますが、関連性があるかどうかはわかりません)

Firefox が (改ざんデータを使用して) 受信した HTTP ヘッダーは次のとおりです。

Status=Created - 201
Date=Wed, 30 Jan 2013 15:53:38 GMT
Server=Apache/2.2.21 (Win32) PHP/5.3.10
X-Powered-By=PHP/5.3.10
Content-Encoding=UTF-8
content-transfer-encoding=binary
Content-Disposition=attachement;filename="entrance_stats_line1.csv";
Cache-Control=no-cache
Content-Length=6141
Connection=close
Content-Type=application/octet-stream; charset=UTF-8

ヘッダーが IE で変更されているかどうかは確認していませんが、Fiddler が機能するようになったら投稿します。

以前に、次のようなヘッダーの他の組み合わせをいくつか試しました。

Status=Created - 201
Date=Wed, 30 Jan 2013 16:34:46 GMT
Server=Apache/2.2.21 (Win32) PHP/5.3.10
X-Powered-By=PHP/5.3.10
Content-Encoding=UTF-8
Content-Disposition=attachement; filename=entrance_stats_line1.csv
Cache-Control=no-cache
Connection=close
Content-Type=text/csv; charset=UTF-8

これにより、「要求されたサイトが見つかりませんでした」というエラーが表示されます。

IE のバージョンは 8.0.6001.18702 です。

4

1 に答える 1

3

「執着」ではなく「執着」です。

(また: HTTP には Content-Transfer-Encoding ヘッダー フィールドはありません)

于 2013-01-30T16:55:02.580 に答える