ブラウザでファイルにリダイレクトするのではなく、バックラウンドでファイルをダウンロードするには次のコードを実行していますが、ファイル全体が表示されるまでダウンロード。それを修正するためにコードで変更できるものは何ですか?PHPダウンロードで他のものがフリーズする
リンクをクリックすると、ファイルが($ファイルパス)からフェッチされ、それはまた、セッションで保護されています場所、ユーザーが見ていないので、これは、別のPHPファイルにロードされます。
header("Cache-control: private");
header("Content-Type: application/octet-stream");
if ($download) {
header("Content-Disposition: attachment; filename=\"" . $title . "\"");
header('Content-Transfer-Encoding: binary');
} else {
header("Content-Disposition: inline; filename=\"" . $title . "\"");
}
// Disable caching
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.
header('Expires: 0'); // Proxies.
readfile($filepath);
Edit //私はまだこれを理解することができませんでした。今私はこのAJAXコードで試していますが、ファイルが完全にダウンロードされ、ハードドライブではなくバックグラウンドで読み込まれるまでページ全体がロックされます。
$('.download').on('click', function(e) {
e.preventDefault();
var self = $(this);
$.ajax({ type: 'POST',
url: self.attr('href'),
async: true,
success : function(response)
{
}
})
});
は、あなたがローカルで作業しているビルトインのdevのサーバー?シングルスレッドなので、一度に1つのリクエストしかアクティブにできません。 – ceejayoz
ローカルサーバーとDigital Oceanサーバーの両方で同じことが起こります。 – SeaBass
jqueryまたはjavascriptの使用はどうですか? – user10089632