ReactJS - 使用 redux-saga 发送一个空对象

ReactJS - sending an empty object with redux-saga

我正在使用 saga.js,当我提出请求时,我的文件是空的。

我需要做一些额外的事情来通过 saga yield 发送对象吗?

我的saga.js:

export function* uploadS3Request({ payload }) {
  console.log('payload', payload)
  const { uploadTypeName, title, imageHeight, imageWidth, file } = payload

  try {
    yield call(api.post, `https://someurl.com/s3`, {
      uploadTypeName,
      title,
      imageHeight,
      imageWidth,
      file
    })

    toast.success('SUCCESS TEST');

  } catch (err) {
    toast.error('Error while trying to update image');
  }
}

这是我 saga.js 中有效负载的 console.log:(所有信息都在这里)

但是我的请求,文件是空的:

这不是 redux 或 redux-saga 的问题,而是 multipart form body 的问题

假设您正在使用 axiosapisauce,您将希望将文件附加到表单数据并发送。

...
const { uploadTypeName, title, imageHeight, imageWidth, file } = payload
const formData = new FormData();
formData.append('file', file);
formData.append('uploadTypeName', uploadTypeName);
...

yield call(api.post, `https://someurl.com/s3`, formData, {
  headers: {
    'Content-Type': 'multipart/form-data'
  }
})
...