javascript - event.file 和 event.target.files 之间的区别
问题描述
我正在尝试formData
与 React 一起使用来存储图像文件并使用 Axios 发送到后端服务。
这是我的组件:
<Dragger
ref={el}
type="file"
name='file'
multiple={true}
onChange={(event) => {
uploadFile(event.file)
}}
>
<p className="ant-upload-drag-icon">
<InboxOutlined />
</p>
<p className="ant-upload-text">
Click or drag file to this area to upload
</p>
<p className="ant-upload-hint">
Once selected, the file will automatically be uploaded.
</p>
</Dragger>
这是我formData
在将其发送到 API 之前的访问方式:
const uploadFile = file => {
const formData = new FormData()
formData.append('file', file)
// api request ...
}
这不起作用。
我见过人们使用的其他实现event.target.files[0]
;我已经对此进行了测试,并且确实有效。
有没有办法让event.file
工作?不是event.file
和event.target.file[0]
一样吗?
编辑:
这是ant design中dragger组件的来源:https ://github.com/ant-design/ant-design/tree/master/components/upload
解决方案
我最近使用了这个组件,所以我可以解释我是如何让它工作的。onChange
您可以简单地使用action
Dragger 组件的 prop 告诉它将文件发送到哪里,而不是使用来上传文件。然后,您可以onChange
在上传完成后更新您的 UI。
<Upload.Dragger
action={'/myImageRoute'}
beforeUpload={beforeUpload}
accept='.png,.jpg,.jpeg,.webp'
withCredentials={true}
onChange={({ file }) => file.status === 'uploading' ? setLoading(true) : setLoading(false)}
/>
推荐阅读
- ibm-cloud - 如何将外部卷连接到 IBM Cloud Code Engine
- domain-driven-design - 在用例中使用基础设施
- visual-studio - MFC:Visual Studio 2019 提示无法实例化 ActiveX 控件?
- java - 类中的Java @Autowire 依赖项并在类成员初始化中使用它们
- ansible - Ansible-playbook 搜索错误目录中的角色!如何纠正它?
- json - 将配置绑定到复杂对象
- questdb - 使用 PgWire 时如何解决 QuestDB Java 客户端 EOFException?
- android - 即使在创建新项目后,Git 也总是打开
- object-detection - 训练、验证和测试:每组正负样本的数量
- hl7-fhir - Google fhir 商店更改搜索结果中的查询字符串 下一个链接