小さなスクリプトは、get文字列に基づいて、ユーザに2つの.pdfファイルのいずれかを送信するために使用されている:PHPのReadFile関数は動作しませんが、唯一のための20+メガのファイルは、
if ($fileToSend == "bigone") {
$filename = "largefile.pdf";
$header = "application/pdf";
} else if ($fileToSend == "smallone") {
$filename = "smallfile.pdf";
$header = "application/pdf";
}
if (file_exists('d/' . $filename)){
header('Content-type: ' . $header);
header('Content-disposition: attachment; filename=' . $filename);
readfile('d/' . $filename);
} else {
echo('No good');
}
どちらのファイルをD/smallfile.pdfとd/largefile.pdfが存在します。 smallfile.pdfは約5メガバイトです。 largefile.pdfは約25メガバイトです。
sendFile.php?fileToSend = smallone works。
sendFile.php?fileToSend = bigoneは機能しません。 FFで、それは
ファイルFirefoxは[URL] /sendFile.php?fileToSend=bigone
何のファイル名のエラーはありませんで、ファイルを見つけることができません を見つけていないと言います。
I)は、(フラッシュを追加
- を試みました。 readfileの前に。これにより、ダウンロードファイルのダイアログボックスが表示されますが、0バイトのファイルが表示されます。
- flush()を追加しています。 readfileの前に、header( 'Content-Length:'。filesize( 'd /'。$ filename))を追加します。 - これは正常に動作しますが、処理に2分ほどかかってしまいます(URLにヒットしても、2分近くは何も起こらず、ダイアログボックスに実際のファイルが正しくダウンロードされて表示されます)。
ご協力いただければ幸いです。 Jon
PHPのメモリ制限を増やしてみましたか? – F21
いいえ。面白い考え。それはこの現象を引き起こすだろうか?私は私の管理者に尋ねます。 – Jon
許可されている場合は、 'ini_set'を使用してこれを自分で行うこともできます。 '' ini_set( 'memory_limit'、 '128M'); ' – F21