私の JavaScript コードは、node.js サーバーに対して次の AJAX 要求を行います。
var url = '/node/download';
var downloadRequest = new goog.net.XhrIo();
downloadRequest.headers.set('content-type', 'application/json');
downloadRequest.send(url);
私の node.js サーバーは、ノードで pdf を作成し、次のコードを介して pdf をクライアントにストリーミングします。
var filestream = fs.createReadStream(pdfpath);
res.writeHead(200, {
'Content-disposition': 'attachment; filename=' + filename,
"Content-Type":"application/pdf","Content-Transfer-Encoding": "binary"});
filestream.on('data', function(chunk) {
res.write(chunk);
});
filestream.on('end', function() {
res.end();
});
しかし、現在、JavaScriptクライアントでこの応答を受け取る方法に問題があり、ダウンロードプロンプトが開き、ユーザーがpdfファイルをダウンロードして保存できるようになります。
助けてください!
事前にサンクス!
PS Plzは、ノードのコードを実装するためのより良い方法も提案します(ある場合)
編集: 考えられる解決策の 1 つは、次のようにリクエストを送信することです。
window.location.assign('/node/download');
このようにして、ダウンロード プロンプトが表示され、製品の非同期性が犠牲になることを除いて、すべて正常に動作します。非同期性も保持できるようにするための回避策はありますか?