我仍然使用JavaScript并遇到了一个我不明白的问题。
守则:
function loadDocumentFromResponse(requestObject, filename){
console.log('Response from Server gets analyzed...');
if( typeof URL === "function" ){
console.log('Will use the URL function to revoke an object url');
var url = URL.createObjectURL(requestObject.response);
var a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('download', filename);
a.click();
URL.revokeObjectURL(url);
// is working with chrome and gets me a download which works
// firefox also gets into this tree but it does nothing!
}else{
// IE, Maxton, Safari and Opera are throwing an Exception, will figure out whats wrong, later....
console.log('Function URL ist unbekannt');
}
}
我的问题实际上是IF案例...... Chrome正是按照我的预期进行的,它给了我一个下载。但Firefox,gots功能URL。也没有从blob响应中创建下载...
我的错是什么? IE的任何提示等等?
cu
答案 0 :(得分:0)
这里有两个问题:
Content-Dispostion
标头可能值为inline
而不是attachment;filename=somefile.ext
download
属性
醇>
由于这适用于Chrome,我倾向于排除第二个问题。这意味着这可能是由于服务器原始响应中的Content-Disposition
标头造成的。我按照以下步骤进行诊断:
检查caniuse.com下载属性功能支持,因为它是HTML 5规范。 Firefox中支持 ,但在IE中根本不支持。
检查了implementation details of the download attribute上的mozilla文档。
(注意,这些步骤很有用,因为你是初学者,最终你只会知道这些东西。当你遇到在不同浏览器中有不同行为的问题时,这是两个非常重要的资源/步骤)
Firefox会优先考虑文档响应中的标头超过download
属性设置的值,而Chrome会优先download
属性优先于Content-Disposition
标头的值。
您必须确保responseObject包含“Content-Disposition:”附件的标头; filename = somefile.ext“(替换为您自己的文件名和扩展名)