href 下载的 xlsx 文件偶尔会损坏
href download xlsx file would be occasionally corrupted
我正在使用 Typescript 开发 Angular4。
我能够使用 XLSX 填充库创建 blob。
假设下面的 blob 是一个有效的 xlsx 对象
var url = window.URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.href = url;
a.download = "download file.xlsx";
a.click();
我在执行过程中保存了 blob 变量。
然后手动 运行 这个块只有大约 20 次。 (该 blob 未重新制作或覆盖)
结果不一致。
下载的 XLSX 文件有时会损坏,有时则不会。
我调查了 javascript 的异步性质,但是因为 blob 已经创建并且一些尝试能够生成有效的 xlsx 文件。我完全不知道下一步该怎么做。
更新:
还是没有解决。但是我在 SAME href 4x 上连续触发了点击事件,中间没有其他行,我得到了 2 个工作版本和 2 个失败版本。
这可能不是一个确切的答案。但我发现只需等待几秒钟,xlsx 文件就完全没问题了。如果我重试,即使最初打开时第一次失败的文件也可以打开。
这让我相信它与 chrome 检测文件已准备就绪的方式有关。
不过,这最终不是 href 下载的问题。
我正在使用 Typescript 开发 Angular4。
我能够使用 XLSX 填充库创建 blob。
假设下面的 blob 是一个有效的 xlsx 对象
var url = window.URL.createObjectURL(blob);
var a = document.createElement("a");
document.body.appendChild(a);
a.href = url;
a.download = "download file.xlsx";
a.click();
我在执行过程中保存了 blob 变量。 然后手动 运行 这个块只有大约 20 次。 (该 blob 未重新制作或覆盖)
结果不一致。
下载的 XLSX 文件有时会损坏,有时则不会。
我调查了 javascript 的异步性质,但是因为 blob 已经创建并且一些尝试能够生成有效的 xlsx 文件。我完全不知道下一步该怎么做。
更新: 还是没有解决。但是我在 SAME href 4x 上连续触发了点击事件,中间没有其他行,我得到了 2 个工作版本和 2 个失败版本。
这可能不是一个确切的答案。但我发现只需等待几秒钟,xlsx 文件就完全没问题了。如果我重试,即使最初打开时第一次失败的文件也可以打开。
这让我相信它与 chrome 检测文件已准备就绪的方式有关。
不过,这最终不是 href 下载的问题。