APIを呼び出してPDFを取得し、responseTypeをarraybufferとして送信する小さなスクリプトを作成しました。これを使用するPDFでダウンロードするときにChromeがBlobオブジェクトをブロックする
私は新しいブロブを作成し、私はアンカー要素を作成しダウンロードするには、これを強制的に「アプリケーション/ PDF」
としてのタイプを設定し、それをBLOBを渡すと、それをクリックしてください。
これはローカルでもテストサーバーの他のブラウザでもうまく動作しますが、Chromeでは失敗します。ダウンロードバーにはファイルがありません。
APIにURLを貼り付けて見ることができ、元のAPI呼び出しからの応答がBlobに渡されるため、PDFが確実に利用可能です。
サンプルコードこれを強制
var fileName = 'dummyFilename-' + offerId + '.pdf';
var blob = new window.Blob([resData], { type: 'application/pdf' });
var anchorElement = document.createElement('a');
var url = window.URL.createObjectURL(blob);
document.body.appendChild(anchorElement);
anchorElement.id = 'anchorElement';
anchorElement.hidden = 'true';
anchorElement.href = url;
if (typeof anchorElement.download !== 'undefined') {
anchorElement.download = fileName;
} else {
anchorElement.target = '_blank';
}
anchorElement.click();
実際、私は実際にはPDFでIEをダウンロードするためにBlobが必要であることがわかりました。最後に、クリックをクリックすると、ダウンロード属性が設定された通常のURLが指定され、これをサポートしていないブラウザ用の新しいタブが開きます。私はまだクロムがBlobを正しく処理していない理由をまだ分かりません。 –