美文网首页让前端飞前端基础
浏览器如何下载文件? FireFox的兼容性

浏览器如何下载文件? FireFox的兼容性

作者: 河的左岸 | 来源:发表于2018-12-06 16:25 被阅读0次

    背景

    测试发现,使用Firefox浏览器导出文件时,没有反应。查了一下,原来使用Ajax去Get调用服务端接口,返回了一个csar文件,FireFox没有弹出保存文件的对话框或者自动保存文件,按F12发现有请求,也正常返回了Blob文件流。
    并且在Chrome下面是正常的。

    原因

    Firefox不兼容导致的。

    方案

    最好的方案就是使用H5的新特性,a标签的download attribute。

    • 可以创建a标签配合download属性
      <a href="xxx/xxx/xx.xx" download="filename">

    • 可以使用iframe.
      有时候并没有固定哪个URL,可能要服务端动态处理:

    function download(url){
        var iframe = document.createElement("iframe")
        iframe.style.display = "none";
        iframe.src = url;
        document.body.appendChild(iframe);
    }
    
    • 通过Ajax请求
      有时候有IFrame限制,比如服务端不允许在IFrame中访问
    fetch('http://somehost/somefile.zip').then(res => res.blob().then(blob => {
        var a = document.createElement('a');
        var url = window.URL.createObjectURL(blob);
        var filename = 'myfile.zip';
        a.href = url;
        a.download = filename;
        a.click();
        window.URL.revokeObjectURL(url);
    }))
    

    相关文章

      网友评论

        本文标题:浏览器如何下载文件? FireFox的兼容性

        本文链接:https://www.haomeiwen.com/subject/yyfifqtx.html