ファイルを強制的にダウンロードするPHPファイルを作成しました。 私はajax経由でそれを呼び出すと動作しません。Googleはajaxがダウンロードを処理できないと言います。 私はURLに向ける新しいウィンドウを開いてください。ajax経由で一時ダウンロードURLを取得
問題は、ファイルがPHPスクリプトの実行中にのみ存在することです。 どうすればこの問題を回避できますか?ここで
はコードです:
PHP:
<?php
$jsonStr = $_POST['jsonStr'];
$tmp_file = tempnam('/tmp', 'data-');
$handle = fopen($tmp_file, 'a+');
fwrite($handle, $jsonStr);
if(!$tmp_file)
{
// File doesn't exist, output error
die('file not found');
}
else
{
// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=iwbtg.lvl");
header("Content-Type: text/plain");
header("Content-Transfer-Encoding: binary");
// Read the file from disk
readfile($tmp_file);
}
?>
JS:
...
var jsonStr = JSON.stringify(jsonObj);
// Request Level file
var http = createRequestObject();
http.open("POST", "save.php", false);
http.setRequestHeader("Content-Type", "application/x-www.form-urlencoded");
http.send("jsonStr=" + jsonStr);
document.location = "tmp/iwbtg.lvl";
この場合、ajaxは使用しないでください。必要な場合は、ajaxサーバー側のスクリプトに実際のダウンロードを行うURLを送り返し、クライアント側のスクリプトにそのURLの新しいウィンドウを開きます。 –