Axios 发布表单数据在 React Native 中无法正常工作

Rah*_*oon 1 javascript multipartform-data react-native axios

我需要在反应本机中发送图像和一些详细信息作为表单数据

为此,我使用axiospost 方法。

这是我的代码:

const formData = new FormData();

formData.append('taskId', taskId);
formData.append('taskName', taskName);
formData.append('projectId', projectId);
formData.append('projectName', projectName);
formData.append('media', media);

const res = await Axios.post(`${URL}`, formData, {
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'multipart/form-data',
  },
});
Run Code Online (Sandbox Code Playgroud)

我的服务器获取的媒体文件为空..任何人都可以知道我在这里做错了什么!?

这是我的请求标头: 我的请求标头

PS:我已经在邮递员上进行了测试,其工作正常

Moi*_*obo 5

我相信问题是你试图media作为 json 对象发送。有两种方法可以解决这个问题。

1.提交前对媒体进行字符串化

    const formData = new FormData();
    formData.append('media', JSON.stringify(media));
Run Code Online (Sandbox Code Playgroud)

您可能还需要对后端进行必要的更改来处理此问题。

2. 将媒体对象拆分为单独的字段

您提到该media对象有名称和文件,因此您可以执行类似的操作。

    const formData = new FormData();
    formData.append('mediaName', media.name);
    formData.append('media', media.file);
Run Code Online (Sandbox Code Playgroud)

请注意,在第二个示例中,我假设对象的属性media

我认为对于您的用例,第二个解决方案的某些变体是首选,因为它已经在邮递员上工作。