下载具有数据 URI 的多个文件

Downloading multiple files with a data URI

提问人:Sam Hammamy 提问时间:6/3/2014 最后编辑:CommunitySam Hammamy 更新时间:11/17/2014 访问量:1639

问:

我知道如何在锚点上设置 href 和下载属性,以允许用户将数据下载为文件。

但是,客户端要求一个链接将两个文件一起下载,而不是压缩!不要问我为什么!

在网上查找,我找到了以下解决方案:

1) 动态创建 2 个 iframe,并在每个表单中将其 GET 设置为服务器上其中一个文件的位置,然后运行表单提交...这里

2) (1) 的变体,使用 JQuery 插件。这里

3)打开弹出窗口。(不值得链接)

我想知道我是否可以在 JS 方面处理这个问题?在同一个应用程序中,我使用以下代码将数据导出到 CSV:

$elm.attr('href', 'data:text/csv;charset=utf8,' + encodeURIComponent(_str)).attr('download', fileName);

其中 _str 是展平的二维数组。

我可以以某种方式跟踪或附加第二个文件吗?

html 下载 data-uri

评论


答:

1赞 Diego La Monica 11/12/2014 #1

您可以即时创建链接并触发 navite 单击事件。

function downloadAll(files){
    if(files.length == 0) return;
    file = files.pop();
    var theAnchor = $('<a />')
        .attr('href', file[1])
        .attr('download',file[0]);
    theAnchor[0].click(); 
    theAnchor.remove();
    downloadAll(files);
}

$('a.download-csv').on('click', function(){
    downloadAll([

        ['file1.csv', 'data:text/csv;charset=utf8,'+ 
                     encodeURIComponent('my,csv,file\and,so,on')],

        ['file2.csv', 'data:text/csv;charset=utf8,'+ 
                     encodeURIComponent('my,csv,file\and,so,on')],

        ['file3.csv', 'data:text/csv;charset=utf8,'+ 
                     encodeURIComponent('my,csv,file\and,so,on')]

    ]);
});

在这里,您可以找到带有工作演示的小提琴

这是我网站上的文章,其中包含所有详细信息