跨浏览器是否可以将文件另存为按钮?

时间:2014-01-22 11:06:43

标签: javascript html5 storage persistent

我正在开发一个客户端音乐播放器,我正在寻找一种方法来保存播放列表以及mp3数据。

localStorage的 localStorage的5mb限制规则选项输出。我想知道还有其他选择。

DataURIs 我读过有关dataURI的信息,例如 Is there any way to specify a suggested filename when using data: URI?  和Cross-browser Save As .txt 但不建议使用默认文件名,特别是缺乏IE支持是破坏者。

索引资料 HTML5 indexedDB and persistence lifetime表明IndexedDB不是持久存储的选项。

我有遗失的选择吗?我希望如此!

谢谢, 安德鲁

2 个答案:

答案 0 :(得分:3)

我现在有一个适用于IE,Chrome和Firefox的解决方案,灵感来自:Javascript set file in download

IE10 +解决方案使用msSaveBlob,代码为:

if (navigator.msSaveBlob) {
    var blob_object = new Blob([store_string], {type: mime_type});
    return navigator.msSaveBlob(blob_object, filename);

    }

对于Chrome / Firefox,它使用下载属性:

else if ('download' in a) {
    blob_object = new Blob ([store_string], {type: mime_type});
    a.href = URL.createObjectURL(blob_object);
    a.setAttribute("download", filename);
    a.innerHTML = "downloading...";
    d.body.appendChild(a);
    setTimeout(function() {
        a.click();
        d.body.removeChild(a);
    }, 66);
    return true;    
}

我还没有调查过Safari,Opera或任何移动浏览器......

答案 1 :(得分:2)

否 - 跨浏览器的SaveAs解决方案无法

Chrome,IE和& FF都支持一种(或多种)方式以编程方式触发文件的下载(和saveAs对话框)。 Safari不支持此功能。