问题描述
在使用 HTML 的文件上传元素<input type="file">
时,处理其返回的files
数据时遇到了这个报错m.map is not a function
。
我的代码如下:
const uploadCSVFiles = event.target.files;
uploadCSVFiles.map((f) => {
if (f) {
setUploadText(`正在上传${f.name}`);
// 省略
}
}
输出 event.target.files,得到:
从图片上可以看出这是一个FileList
类型的数据。
解决方式
经过查阅资料后才发现,这个FileList
类型虽然看起来是个数组,但其实并不是数组,所以不能使用map
方法。
map
方法的全称是Array.prototype.map()
,属于数组类型的方法。
因此我改为使用for (const ... of ... )
的方式去遍历FileList
类型,如下:
for (const f of event.target.files) {
setUploadVis(true);
if (f) {
setUploadText(`正在上传 ${f.name} ...`);
// 省略
}
}
标签:files,map,const,function,FileList,input,event
From: https://www.cnblogs.com/chrystal/p/16586529.html