[PHP-users 22798]Re: zipファイルのダウンロードについて

Y.Matsumoto rokubou @ msoft.co.jp
2004年 7月 26日 (月) 14:00:10 JST


まつもとです。

> 現在、PHPにてzipファイルをダウンロードさせようとしています。
> WindowsのIEでは普通にダウンロードが出来るのですが、
> MacのIEだと「処理不可能なファイルタイプ」と出て、ファイル名の
> 所が、PHPプログラム名になってしまいます。
> (ファイル名を変えてダウンロードすればちゃんと中身を見る事はできます。)
> 
> Mac版IEのMIMEの設定かと思い、ファイルヘルパーの設定を見てみましたが
> 「PC ZIP Archive」と言うのが設定されていました。
> 
> PHPのソースの書き方に、何か工夫がいるのでしょうか?
> 知っている方がいらしたら教えてください。
> 
>     header( "Content-Type: application/octet-stream" );
>     header( "Content-Disposition: attachment; filename=test.zip" );
>     echo readfile( "test.zip" );

HTTP1.1あたりのRFCをよんだり、MS社の開発者サイトの中で検索すると
出て来たような……

Macでは試験したことが無いですが、Windows限定でよければ。

 $dlFileName = mb_convert_encoding($dlFileName, "SJIS-win", mb_detect_encoding($dlFileName));
 header("Content-type: application/x-download; name=".$dlFileName);
 header("Content-Disposition: attachment; filename=".$dlFileName );
 header("Content-Description: zip");

こんな書き方で、何とかなります。
最初の一行は、ファイル名が日本語の場合でも、
「Windows限定」で何とかダウンロードできるようにしたものです。

ただし、他のブラウザでは全滅します。
それ以外のブラウザも、動作対象に含まれる場合は別のヘッダを送る必要が
あるので、それはそれで調べてみてください。

# どちらかというと、他のブラウザでの書き方を知りたいかも(^^;

-- 
Y.Matsumoto <rokubou @ msoft.co.jp>



PHP-users メーリングリストの案内