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