ダウンロードを強制するスクリプトがあり、Javascript を介してこれを呼び出します。ただし、ダイアログ ボックスはポップアップしません。download.php スクリプトは次のとおりです。
header("Pragma: public"); // required
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-Type: $ctype");
// change, added quotes to allow spaces in filenames, by Rajkumar Singh
header("Content-Disposition: attachment; filename=\"".basename($properFilename)."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile("$filename");
exit();
これがJavascriptです(JQueryを使用):
///force download
$.ajax({
type: "GET",
url: "download.php",
data: 'file=' + msg + '&properFilename=' + properFileName,
success: function(msg){
window.location.href = msg;
});//ajax
これにより、ダウン ダイアログ ボックスが表示されるのではなく、ブラウザーが別のページにリダイレクトされます。
JS 変数 msg に正しいヘッダーを持つファイルが含まれていることはわかっていますが、ダウンロード ダイアログ ボックスを表示するためにどうすればよいかわかりません。
皆さんありがとう
ps このスレッド JS または PHP をどこに置くべきかわかりませんでした。
編集:
私はそれを確信している正しいアプローチを持っています:) - ユーザーが私のサイトに来て、フォームに記入し、送信を押します。数秒後、ダウンロードできるダイアログ ボックスにファイルが表示されます。これをする:
ファイルを取得してダウンロードするために AJAX 呼び出しを行います。PHP スクリプトを使用してヘッダーを送信します。今必要なのは、ダウンロード ダイアログ ボックスを表示する方法だけです!!