Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以使用跨浏览器的“文件另存为”按钮?_Javascript_Html_Storage_Persistent - Fatal编程技术网

Javascript 是否可以使用跨浏览器的“文件另存为”按钮?

Javascript 是否可以使用跨浏览器的“文件另存为”按钮?,javascript,html,storage,persistent,Javascript,Html,Storage,Persistent,我正在开发一个客户端音乐播放器,并且正在寻找一种保存播放列表和mp3数据的方法 本地存储 选择退出的本地存储规则的5mb限制。我想知道还有什么其他选择 数据URI 我读过关于DataURI的文章,例如。 及 但不建议使用默认文件名,尤其是缺乏IE支持,这些都是破坏交易的因素 IndexedDB 表明IndexedDB不是持久存储的选项 有没有我错过的选择?我希望如此 谢谢, Andrew我现在有了一个适用于IE、Chrome和Firefox的解决方案,灵感来自: IE10+解决方案使用msSav

我正在开发一个客户端音乐播放器,并且正在寻找一种保存播放列表和mp3数据的方法

本地存储 选择退出的本地存储规则的5mb限制。我想知道还有什么其他选择

数据URI 我读过关于DataURI的文章,例如。 及 但不建议使用默认文件名,尤其是缺乏IE支持,这些都是破坏交易的因素

IndexedDB 表明IndexedDB不是持久存储的选项

有没有我错过的选择?我希望如此

谢谢,
Andrew

我现在有了一个适用于IE、Chrome和Firefox的解决方案,灵感来自:

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或任何移动浏览器…

否-不可能使用跨浏览器的另存为解决方案


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

所以只支持客户端,不涉及服务器?那么我不明白你为什么还要下载/保存mp3数据,因为它应该已经在客户端上了,对吧?只有播放列表文件才有5 MB的限制也应该没有什么问题;filename=“playlist.txt”。我相信这会迫使浏览器弹出“另存为”对话框。标题和问题本身提出了不同的问题。这个问题本身增加了更多的困惑,你到底想要什么?是的,只是客户端。mp3数据将在客户端,但我不希望用户每次加载播放器时都必须选择或拖放单个mp3文件。如果单个MP3的文件路径可以保存,然后通过编程加载,那就好了,但我认为这是不可能的。我错了吗?@gpgekko我很清楚:OP想让用户使用预设的文件名保存文件。请看并回答。OP只希望它适用于每一款浏览器,而不仅仅是那些支持
download
属性的浏览器。