gpt4 book ai didi

javascript - 简单客户端应用程序中的文件处理

转载 作者:行者123 更新时间:2023-11-28 08:41:18 25 4
gpt4 key购买 nike

需要有关在 Javascript 应用中处理简单文件下载 (.ics) 的选项的建议。

假设 s.icsMsg 是格式良好的文本/日历字符串,则以下内容在 Chrome 中有效:

var downloadLink = document.createElement("a");
downloadLink.href = 'data:text/calendar;charset=utf-8,' + s.icsMsg;
downloadLink.download = "Calendar.ics";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);

文件已下载、正确命名并在邮件客户端中打开。在 IE 9+ 中,我收到数据区域大小错误。

有没有办法在 IE 中完全在客户端实现此目的?我知道我可以通过在http header 中设置内容处置来做到这一点,但由于文件是在客户端生成的,因此需要两个额外的跃点来将其上推,保存它,然后使用正确的 header 将其发送回来(如果这可行的话)。

任何建议都会很棒......

最佳答案

找到了解决方案。在 IE10/11 中工作正常,之前我只是没有显示触发此功能的链接。考虑到大多数用户将使用移动设备,因此旧版 IE 不会成为问题。

对于非 IE 浏览器会使用 window.open(),但找不到如何设置文件名。虽然没有分阶段进行,但一切都在进行。

if (!s.isIE) {
var downloadLink = document.createElement("a");
downloadLink.href = 'data:text/calendar;charset=utf-8,\r\n' + escape(s.icsMsg);
downloadLink.download = "Calendar.ics";
document.body.appendChild(downloadLink);
downloadLink.click();
document.body.removeChild(downloadLink);
}
else {
var blob = new Blob([s.icsMsg]);
window.navigator.msSaveOrOpenBlob(blob, 'Calendar.ics');
}

关于javascript - 简单客户端应用程序中的文件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com