[解決済み] Ajaxを使用してPDFファイルをダウンロードし、開く
2022-10-21 21:43:33
質問
PDFを生成するアクションクラスがあります。その
contentType
は適切に設定されています。
public class MyAction extends ActionSupport
{
public String execute() {
...
...
File report = signedPdfExporter.generateReport(xyzData, props);
inputStream = new FileInputStream(report);
contentDisposition = "attachment=\"" + report.getName() + "\"";
contentType = "application/pdf";
return SUCCESS;
}
}
私はこれを
action
をAjaxで呼び出しています。私は、このストリームをブラウザに配信する方法を知りません。私はいくつかのことを試してみましたが、何もうまくいきませんでした。
$.ajax({
type: "POST",
url: url,
data: wireIdList,
cache: false,
success: function(response)
{
alert('got response');
window.open(response);
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert('Error occurred while opening fax template'
+ getAjaxErrorString(textStatus, errorThrown));
}
});
上記ではエラーが発生します。
あなたのブラウザは、このサーバーが理解できないリクエストを送信しました。
どのように解決するのですか?
必ずしもAjaxが必要なわけではありません。単に
<a>
のリンクだけで十分です。
content-disposition
を
attachment
をサーバーサイドのコードに追加します。この方法では、もしそれがあなたの主な関心事であるなら、親ページは開いたままになります(そうでなければ、なぜ不必要にこのためにAjaxを選んだのでしょうか?) それに、これをうまく非同期で処理する方法はありません。PDFは文字データではありません。バイナリデータです。以下のようなことはできません。
$(element).load()
. というようなことはできません。
全く新しい
リクエストを使いたい。そのために
<a href="pdfservlet/filename.pdf">pdf</a>
が完全に適しています。
サーバーサイドのコードについてもっと支援するために、使用されている言語についてもっと説明し、コードの試行の抜粋を投稿する必要があるでしょう。
関連
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] URLを新しいタブで開く(新しいウィンドウではない)
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] ファイルを作成し、書き込むにはどうすればよいですか?
-
[解決済み] Androidでファイルをダウンロードし、ProgressDialogで進捗を表示する。
-
[解決済み] BootstrapのモーダルウィンドウをjQueryで開くには?
-
[解決済み] jQuery Ajax ファイルアップロード
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] URL/アドレスバーからJavascriptの関数を呼び出す
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] .ashxページの呼び出しによるファイルのダウンロード
-
[解決済み] HTMLにPDFを埋め込むおすすめの方法とは?
-
[解決済み] jQuery.Ajaxでファイルをダウンロードする
-
[解決済み] ajaxポストからのファイルダウンロードを処理する
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] CORS OriginヘッダーとCSRFトークンによるCSRF保護
-
[解決済み] Node.jsのES6クラスをrequireで作る
-
[解決済み] なぜjavascriptのES6 Promisesはresolve後も実行を継続するのですか?
-
[解決済み] JavaScript で `throw` の後に `return` をする必要がありますか?