我正在使用FileReader使用'readAsText'方法检测给定的blob是文件还是文件夹。我有以下代码:
testFileOrFolder(file) {
return new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.onload = (ev) => {
resolve({isFile: true});
};
fileReader.onerror = (error) => {
resolve({isFile: false});
};
fileReader.readAsText(file);
});
}
当有文件IE边缘命中'onload'方法,一切正常。
在其他情况下,当存在文件夹时,不会触发'onerror'方法。 这仅在IE Edge中发生。
控制台中有错误,但即使使用try / catch也无法处理。
答案 0 :(得分:0)
我添加了try / catch语句,它起作用了。工作代码为:
testFileOrFolder(file) {
return new Promise((resolve, reject) => {
const fileReader = new FileReader();
fileReader.onload = (ev) => {
resolve({isFile: true});
};
fileReader.onerror = (error) => {
resolve({isFile: false});
};
// Catch fileReader Error for IE Edge
try {
fileReader.readAsText(file);
}
catch (err) {
resolve({isFile: false});
};
});
}
Microsoft文档说支持'onerror'的事件,但这可能取决于浏览器版本