我的代码(如果不是filesaver.js依赖项(https://github.com/eligrey/FileSaver.js/),我会让它可运行)
var array = new Array();
array[0] = 'a'; //.replace(/<br>/g, '\n\t');
var blob = new Blob(array, {type: "text/plain;charset=utf-8"});
var pub = function () {
console.log('hello');
console.log(new Error().stack);
}
let loc = window.location.pathname.substring(window.location.pathname.lastIndexOf("/") + 1);
let obj = window.saveAs(blob, loc);
obj.onwriteend = pub;
// obj.onerror = pub;
obj.onabort = pub;保存文件时没有问题
问题是onwriteend处理程序在我选择文件之前就被调用了,而onabort永远不会被调用。我不知道这是怎么回事。当内容写入磁盘或文件选择器中止时,我正在尝试获取回调。
发布于 2020-12-29 01:53:06
FileSaver.js受到其使用save link隧道的限制:它声明的侦听器不起作用,并且无法获得已保存文件的名称和目录,甚至无法知道文件是否已保存。
使用browser-nativef而不是FileSaver.js是好的,因为它使用已建立的FileHandler / File API。但是,对我来说,browser-nativef的限制太大了:您无法获得文件下载的目录/ URI / URL。提供此“链接”的唯一方法是通过JavaScript所能看到的范围之外的(FileSave.js)浏览器文件下载过程。
https://stackoverflow.com/questions/65470895
复制相似问题