我阅读了很多关于这个主题的内容,Safari 似乎在这方面存在问题(甚至包括 filesaver.js)。我仍然想知道是否有任何方法让用户点击一个按钮并将 JSON 文件带文件名下载到他的设备。
有许多相关的讨论串,而 Safari 在过去曾经出现过这样的问题,不过已经得到了解决。但是目前的 Safari 版本似乎仍无法做到。我把最后一丝希望寄托在大家身上。iOS 更新到最新版本也没有帮助。
这是我的方法,在 Safari 桌面版上有效:
exportButton.addEventListener("click", () => {
const appState = databaseConnector.getApplicationStateAsString();
const blob = new Blob([appState], { type: "text/json" });
const fileName = `backup_${
new Date().toISOString().split("T")[0]
}.json`;
const tempElement = document.createElement("a");
const url = URL.createObjectURL(blob);
tempElement.href = url;
tempElement.download = fileName;
document.body.appendChild(tempElement);
tempElement.click();
setTimeout(function () {
document.body.removeChild(tempElement);
window.URL.revokeObjectURL(url);
});
});
application/octet-stream
,并将 Content-Disposition 设置为attachment; filename="filename.jpg"
?这样应该可以了,似乎 Safari 终于允许任意下载了。 - Owen Versteeg