[PHP-users 27752] ファイルダウンロードでzipファイルのみ途切れる
keijiro
icm @ pepota.com
2005年 12月 3日 (土) 23:59:18 JST
こんばんは。
keijiroです。
CentOS4
php-4.3.9-3.9(rpm)
を使用しています。
PHPからファイルのダウンロードをさせたいと思います。
その中で、不可解な現象があります。
全てのzipファイルではないのですが、
中身はjpegファイルを圧縮したzipファイルで
400kb〜500kb前後のファイルの時、
ファイルが壊れてしまいます。
バイナリエディタで比較したところ、
最後の10kbほどが途切れてしまっています。
zipファイルではなく、他のファイルなら、
正常に動作します。
また、zipでも小さいサイズなら成功します。
さらに、zipの時は、
header("Content-Type: application/zip");
を付けても付けなくても、
ファイル名が正常に表示(?)されず、
ダウンロード時のファイル名がソースコード名となってしまいます。
同様の現象でつまずいた方がいらっしゃいましたら、
ご教授ください。
ちなみに、以下のソースは、
http://php.bieffe.org/manual/ja/function.header.php
から使用しましたが、
これ以外のやりかた、
> $fp = fopen( $theFile, "r" );
> while( !feof( $fp ) ){ print fgets( $fp ); }
> fclose( $fp );
でも同様でした。
-----
<?php
dl_file("test.zip");
function dl_file($file){
$len = filesize($file);
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
$ctype="application/octet-stream";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $ctype");
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
@readfile($file);
exit;
}
?>
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
keijiro
icm @ pepota.com
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
PHP-users メーリングリストの案内