我有一个文件输入和一个处理函数,我需要将每个文件转换成一个普通对象,并使用URL.createObjectURL
给予它一个URL,然后存储它们。
const files = [];
const handleFileUpload = (e: React.ChangeEvent<HTMLInputElement>) => {
for (const file of Array.from(e.target.files)) {
const plain = {...file, url: URL.createObjectURL(file)};
files.push(plain);
}
}
然而,这是行不通的。plain
原来只有url
属性(例如{url: 'blob:http://localhost:8080/5a574d7f-178d-44f4-accf-4be313ac098a'}
)
我也试过:
第一次
我希望有一个files
数组,它由具有url
属性和File
属性的普通对象组成。我该怎么做呢?
先谢谢你。
Edit:好吧,最初我想把文件存储在Redux存储中,但是它抱怨不可序列化的值。现在我意识到这根本不是一个好主意。
我需要URL来显示上传图像的预览。结果我需要Files
本身来稍后将它们作为formdata发送。
有没有更好的方法来存储和操作上传的图像,同时方便地在多个组件之间共享它们?使用简单的useState
并将状态作为道具传递给子组件是一个好的选择吗?
1条答案
按热度按时间k5ifujac1#
File对象不是一个典型的JS对象类型,它是一个Blob,我认为它没有任何属性,您可以通过它访问的唯一方法和属性由它的Prototype(而不是File本身)拥有,在这种情况下,您不能“复制”对象的方法或属性。
为什么不直接将其存储在数组中,方法如下: