【发布时间】:2022-01-18 08:17:14
【问题描述】:
我在这里遇到了多个图像的问题。我的问题是我想通过 API 上传多张图片。 API 无法通过一个请求处理它。所以才想一张一张上传图片,一张一张调用API。我该怎么做?
export const saveImages =
({ images = [], oldImages, isNew }) =>
async (dispatch) => {
try {
dispatch({
type: constants.REQUEST,
});
let responses;
if (images?.length) {
let formData = new FormData();
const requests = images.map(({ imageFileName, imageFile }) => {
formData.append(imageFileName, imageFile);
formData.append("isNewProduct", isNew);
return axios.post(
`${URL}/saveImages`,
formData
);
});
responses = await Promise.all(requests);
}
dispatch({
type: constants.SUCCESS,
payload: [...(oldImages || []), ...response?.data],
});
} catch (error) {
dispatch({
type: constants.FAILURE,
});
}
};
【问题讨论】:
-
看起来这不是关于 React 而是
axioslibrary -
您是否在问如何迭代
images数组并发出单独的网络请求?如果您无法批量上传到"/bulk-upload-image"端点,那么它有什么意义?您是否有不同的端点用于单个单独的上传?你已经尝试过什么? -
@DrewReese。是的,我想迭代图像并发出单独的 api 请求。这是我到目前为止所尝试的。我的问题是我想发出多个请求,但必须等待其他人完成并成功发送一个。
-
response = await axios.post(`${URL}/bulk-upload-image`, formData);不会一次性处理所有这些并为您带来成功吗?如果您确实需要将它们拆分为单独的请求,则将图像映射到 Promises 数组 (axios.post) 和await Promise.all(....)它们。当所有映射的承诺都解决时,Promise.all解决。 -
@DrewReese。我不想在一个请求中处理它们。如果可能的话,我正在尝试多个请求。你能通过映射图像并使用 Promise.all 来帮助我回答这个问题吗?谢谢德鲁
标签: reactjs ecmascript-6 react-hooks axios