我需要在Firefox 的新标签页中打开该文件(其他浏览器支持并不重要)
文件名需要与Content-Disposition匹配。
所以我将 POST 中的数据发送到服务器,然后我收到 PDF文件作为回应。 响应的标题是(例子):
Content-Type: application/pdf
Access-Control-Expose-Headers: Content-Disposition
Content-Disposition: attachment; filename="file name.pdf"
Content-Length: 234
我的回复是PDF文件本身。(Blob - > application / pdf)
此外,还可以同时多个请求
现在文件在新窗口中打开,但文件名错误(文件名不可用)。它也被Firefox阻止了。
我的代码(不是全部,只有重要部分):
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 201){
var filename = this.getResponseHeader('Content-Disposition').split('=')[1];
filename = filename.substr(1, filename.length-2);
var url = window.URL.createObjectURL(this.response);
window.open(url);
}
};
xhr.open('POST', host + this.getLink('preview', this.collection.jsonSchemaSwapData).href);
xhr.setRequestHeader("Content-type","application/json");
xhr.responseType = 'blob';
xhr.send(JSON.stringify(this.toJSON()));