1

ファイルのダウンロードは機能しています - 大きなファイルのダウンロードを除いて - 大きなファイルのダウンロードが速すぎて、開くと壊れます - エラー メッセージが表示されます (zip ファイルの場合): ファイルを開けません: 有効なアーカイブではないようです。ファイルは正常にアップロードされており、フォルダー内にあります

これは、ヘッダーのダウンロードを強制するために使用しているphpコードです

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
4

3 に答える 3

0

解決策を見つけました

これは最大メモリ割り当ての問題でした-phpのデフォルト設定は236Mでした

私はこれとその働きを上げました

すべての助けに感謝します

よろしく

ジェフ

于 2012-07-25T10:12:35.850 に答える
0

まず、ファイルに直接アクセスしてみてください (zip ファイルへの直接 URL)。

エラーや破損も発生する場合は、ストリームライターなどを使用して、一度にデータのチャンクを書き込みます。

(サーバー側のファイルが破損していないと仮定します)

または、このようなものを使用します

http://php.net/manual/en/httpresponse.send.php

于 2012-07-25T09:35:08.307 に答える
0

メモリ割り当てを増やしても、ダウンロードはまだかなり信頼できませんでした. 以下を使用して安定させることができました。皆様のご意見をお待ちしております。

header("Content-Disposition: attachment; filename=" . urlencode($file));   
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");            
header("Content-Length: " . filesize($file));
flush(); // this doesn't really matter.

$fp = fopen($file, "r");
while (!feof($fp))
{
echo fread($fp, 65536);
flush(); // this is essential for large downloads
} 
fclose($fp); 
于 2012-07-26T14:14:04.203 に答える