サーバーにJSONデータを送信しています。サーバーはPDFファイルを生成し、そのPDFファイルへのURLで応答します。次に、PDFファイルをダウンロードするためにサーバーに別の要求を行います。ダウンロードを行うには、非表示のiFrameを作成し、ソースにPDFのURLを設定します。ユーザーのブラウザを同じページに置き、バックグラウンドでダウンロードしたいと考えています。私がやっていることと私が行った解決策の詳細はthis SO questionにあります。iframe経由でファイルをダウンロードする際にChromeエラーが発生しました
この方法をChromeで使用するときは、すべてうまく動作します。しかし、クローム開発者コンソールを見ると、エラーメッセージFailed to load resource
が表示されます。 私はこれらのエラーを取得しないようにこれを別の方法で行う方法はありますか?
非常にシンプルで機能しているexample of the problem in actionがjsfiddleで確認できます。 [PDFをダウンロード]ボタンをクリックしてChromeコンソールをご覧ください。
、そのページ上のコードは次のようになります:
$(document).ready(function() {
var downloadFile = function(url){
var iframe = $("iframe#download");
if (!iframe.length) {
iframe = $("<iframe id='download' style='display:none;'/>");
$("body").append(iframe);
}
iframe.attr("src", url);
};
$("button").click(function() {
downloadFile("http://www.education.gov.yk.ca/pdf/pdf-test.pdf");
});
});
「display:none;」を取り除くと、それは私のためにMac用のChrome Stableで動作します。 Chromeには、組み込みのPDFビューアを使用してPDFを開こうとしていることが関係していると思います。たぶん、応答のコンテンツタイプをapplication/pdfからapplication/octet-streamに変更して、通常のファイルとして扱い、ダウンロードするようにしてみてください。 –