私が実装しようとしているのは、PHPを通してファイルをダウンロードすることです。 私が直面している2つの問題があります。私は頭がおかしくなって、ここで間違っていることを考えています。PHPはファイルのダウンロードを強制します - ダウンロードが途切れているか、システムが無効であるか壊れていると言うファイル
- 私がダウンロードした」と言うIEのエラーメッセージを取得すると、ダウンロードが停止したときに、私はIEを使用してファイルをダウンロードしようとするたびに、ダウンロードがについての私のファイルサイズは1024KBであると言うつまり途中で中断され、500KB程度であります中断された '
- 頻繁に遭遇する他の問題は、ダウンロードしたファイル(実際にはzipファイル)が何らかの理由で時々破損するということです。サーバー上のファイルは問題ありません。もしそこから直接ダウンロードすれば問題はありません。しかし、PHPスクリプトを使用してダウンロードしてファイルを解凍しようとすると、Windowsに「無効なファイルまたは破損したファイル...」というメッセージが表示されます。
本当に助けが必要です。続き
は、ファイルをダウンロードするコードのブロックである: -
$fileName = "./SomeDir/Somefile.zip";
$fsize = filesize($fileName);
set_time_limit(0);
// required for IE, otherwise Content-Disposition may be ignored
if(ini_get('zlib.output_compression'))
ini_set('zlib.output_compression', 'Off');
// set headers
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: application/zip');
header("Content-Disposition: attachment; filename=\"".basename($fileName)."\";");
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
header("Content-Length: " . $fsize);
// download
$file = @fopen($fileName,"rb");
if ($file) {
while(!feof($file)) {
print(fread($file, 1024*8));
flush();
if (connection_status()!=0) {
@fclose($file);
die();
}
}
@fclose($file);
}
お返事ありがとうございます。ダウンロードしたファイルが壊れているか無効でIEが突然ダウンロードを停止し、「ダウンロードが中断しました」と表示される – Rohan
おそらく、別のコンテンツタイプを使用しようとしている可能性があります。アプリケーション/ application/octet-streamを使ってみてください。それが役に立っているかどうかを確認してください。 –