JavaScript 使用 FormData 和 Promise 上传多个文件
这段代码展示了如何使用 JavaScript 中的 FormData 和 Promise 来上传多个文件。
const formData = new FormData();
const promises = fileList.map(item =>
fetch(item.url)
.then(response => response.blob())
.then(blob => new File([blob], 'image.jpg'))
);
Promise.all(promises).then(files => {
files.forEach(file => {
formData.append('file', file);
});
console.log(fileList)
console.log(formData)
});
const res = await proxy.Api.uploadPhoto(formData)
代码解释:
- 创建一个
FormData对象,用于存储要上传的文件数据。 - 使用
fileList.map遍历文件列表,并使用fetch获取每个文件的 Blob 数据。 - 将 Blob 数据转换为
File对象,并使用formData.append将每个文件添加到FormData对象中。 - 使用
Promise.all并发处理所有文件的上传请求。 - 在所有文件上传完成后,使用代理的
uploadPhoto方法将FormData对象发送到服务器。
需要注意的是:
- 确保代理 (proxy) 的配置正确,以便能够正确地处理文件上传请求。
- 确保
fileList中包含了正确的文件信息,包括文件 URL 和文件名。 - 如果出现问题,可以尝试调试代码,打印出错误信息,以便更好地定位问题所在。
调试建议:
- 打印
fileList和formData的内容,检查是否包含了正确的信息。 - 在
fetch请求中添加错误处理,打印出错误信息。 - 使用浏览器的开发者工具查看网络请求,检查请求是否成功发送以及服务器返回的响应。
希望这段代码示例和解释能够帮助你理解如何使用 JavaScript 上传多个文件。
原文地址: https://www.cveoy.top/t/topic/ntBU 著作权归作者所有。请勿转载和采集!