1

バックエンドスクリプトにPOSTデータを送信し、それを使用してその場で一時ファイルを生成し(動的に生成され、サーバー上のディスクに保存されないという点で一時的です)、それをクライアントに提供しますダウンロード。

バックエンド スクリプトが正常に機能しています。問題は、AJAX 呼び出しを介してダウンロード プロンプトを取得する方法をまだ見つけていないことです。

データを使用していない場合はPOST、次のようなものを使用します。

window.location.href = 'path/to/my/script.php';

私が望んでいることは可能ですか?フォームを DOM に動的に挿入して送信したり、別のブラウザ ウィンドウを開くなどの「ハック」に頼らずに実行できますか?

4

2 に答える 2

4
  1. POST リクエストを作成します。
  2. リソースを作成します。
  3. リソースパスで答えてください。
  4. window.location.href = resourcePath.
  5. [オプション] サードパーティのダウンロードからそのようなリソースを保護したいですか? CSRF トークンを添付し、CSRF チェックに合格した場合にのみリソースを利用できるようにします。それ以外の場合は、おめでとうございます。403 の子犬を獲得しました!

リソースに適切なヘッダーがある場合、ブラウザは特定のアプリで保存/開くように求めます。/そう。

于 2012-08-31T16:24:44.990 に答える
1

GETを介してダウンロードを利用できるようにしない限り、従来のフォームの送信なしではそれを行うことはできません。

ただし、ダウンロードマネージャーなどはPOSTでうまく機能しないことが多いため、とにかくそうすることをお勧めします。スクリプトで一時URLを生成し、質問に既に投稿したJavaScriptを使用してそのURLにリダイレクトするだけです。

于 2012-08-31T16:22:13.683 に答える