[PHP-users 10872] ファイルのダウンロードについて、たまに上手く動作してくれない。
辻 靖
php-users@php.gr.jp
Wed, 16 Oct 2002 14:33:05 +0900
はじめまして、辻と申します。
ファイルのダウンロードについて、たまに上手く動作してくれない。
色々と関連HPや過去ログ等を調べたのですが、該当する様なものが見つからなかった
ので、この問題を解決策をご教示願い致します。
(調べかたが悪いかもしれません。似たようなものはいっぱいあったのですが)
■仕様
クライアントアプリを動かす為のファイルをWEBからダウンロードさせる。
■現象
現象が二つありまして
(1).
たまに、ダウンロードのパネルが開かずページ移動し真っ白い画面が表示される。
ページのソース表示にて確認すると中身は空っぽ。
(2).
たまに、ダウンロードするファイルが、ダウンロードさせるPHPファイル名となる。
ダウンしても空っぽ。
どちらも、たまに発生します。
大概は上手くいくのですが、一発目で発生する場合もあります。
確認したIEバージョンは
IE4.0/IE5.0/IE5.01SP2/IE5.5/IE5.5SP2/IE6.0/IE6.0SP1
なお、キャッシュもクリアしてテストしています。
この様な不可解な現象に悩んでおります。
皆さんのお知恵を拝借させてください。宜しくお願い致します。
■ソース
download.php ファイル選択のソース
download_file.php 実際にファイルをダウンさせるソース
以下は、download_file.phpです。
$prmFILE:ファイル名
$prmSIZE:ファイルサイズ
// バイナリファイルのダウンロード時
(ウィンドズで作成したバイナリをFTPにてアップ)
header ("Content-Disposition: attachment; filename=" . $prmFILE);
header ("Content-type: application/octet-stream");
header ("Content-Transfer-Encoding: binary");
header ("Content-length: " . $prmSIZE);
readfile ($prmFILE);
// テキストタイプ(CSVファイルは省く)のダウンロード指定時
header ("Content-Disposition: attachment; filename=" . $prmFILE);
header ("Content-type: application/octet-stream");
header ("Content-length: " . $prmSIZE);
readfile ($prmFILE);
// テキストタイプ(CSVファイル)のダウンロード指定時
header ("Content-Disposition: attachment; filename=" . $prmFILE);
header ("Content-type: application/x-csv");
header ("Content-length: " . $prmSIZE);
readfile ($prmFILE);
尚、IE5.5以下では
header ("Content-Disposition: inline; filename=" . $prmFILE);を
header ("Content-Disposition: attachment; filename=" . $prmFILE);
に入れ替えてます。
(ダウンロードするファイルが正しく表示されない場合がある為)
また、「Content-Disposition: Attachment」が動作しないとあるようなので、
回避策として、Internet Explorer 5.5以下では、存在しない ContentType を
下記の様に設定します。
header ("Content-type: application/octet-stream");を
header ("Content-type: application/octet-stream-dummy");
に入れ替えてます。
以上です。皆さん宜しくお願い致します。
-----------------------------------------------------------
株式会社うるうるネット
辻 靖
ytsuji@uruuru.net