Axios post 表单数据在 React Native 中无法正常工作
Axios post formdata not working properly in react native
我需要在 react-native
中以 form-data 的形式发送图片和一些详细信息
为此,我正在使用 axios
post 方法。
这是我的代码:
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',
},
});
我的服务器正在获取空的媒体文件.. 谁能知道我在这里做错了什么!?
这是我的请求header:
PS: 我。已经在 postman 上测试过,并且在
上工作正常
我认为问题在于您试图将 media
作为 json 对象发送。有两种方法可以解决这个问题。
1.提交前将媒体字符串化
const formData = new FormData();
formData.append('media', JSON.stringify(media));
您可能还需要对后端进行必要的更改以处理此问题。
2。将媒体对象拆分为单独的字段
您提到 media
对象有名称和文件,因此您可以这样做。
const formData = new FormData();
formData.append('mediaName', media.name);
formData.append('media', media.file);
请注意,在第二个示例中,我假设了 media
对象的属性。
我认为对于您的用例,第二种解决方案的一些变体是首选,因为它已经在 postman 上运行。
在我的例子中,问题出在媒体类型上,如果我 select png 或 jpg 或 jpeg,我用来选择媒体的库给出的媒体类型为 image/jpg
。所以我像这样更新了我的代码
mediaData.forEach((item: any, index: number) => {
formData.append(`media`, {
uri: item?.uri,
type: item?.type === 'image/jpg' ? 'image/jpeg' : item?.type,
name: item?.fileName,
});
});
像这样更新后一切正常
将图像发送到后端时,您必须将类型与图像一起发送
试试这个
var formdata = new FormData();
formdata.append('profile_image', {
uri: media,
name: "mediaName",
type: mimeType
});
我需要在 react-native
中以 form-data 的形式发送图片和一些详细信息为此,我正在使用 axios
post 方法。
这是我的代码:
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',
},
});
我的服务器正在获取空的媒体文件.. 谁能知道我在这里做错了什么!?
这是我的请求header:
PS: 我。已经在 postman 上测试过,并且在
上工作正常我认为问题在于您试图将 media
作为 json 对象发送。有两种方法可以解决这个问题。
1.提交前将媒体字符串化
const formData = new FormData();
formData.append('media', JSON.stringify(media));
您可能还需要对后端进行必要的更改以处理此问题。
2。将媒体对象拆分为单独的字段
您提到 media
对象有名称和文件,因此您可以这样做。
const formData = new FormData();
formData.append('mediaName', media.name);
formData.append('media', media.file);
请注意,在第二个示例中,我假设了 media
对象的属性。
我认为对于您的用例,第二种解决方案的一些变体是首选,因为它已经在 postman 上运行。
在我的例子中,问题出在媒体类型上,如果我 select png 或 jpg 或 jpeg,我用来选择媒体的库给出的媒体类型为 image/jpg
。所以我像这样更新了我的代码
mediaData.forEach((item: any, index: number) => {
formData.append(`media`, {
uri: item?.uri,
type: item?.type === 'image/jpg' ? 'image/jpeg' : item?.type,
name: item?.fileName,
});
});
像这样更新后一切正常
将图像发送到后端时,您必须将类型与图像一起发送 试试这个
var formdata = new FormData();
formdata.append('profile_image', {
uri: media,
name: "mediaName",
type: mimeType
});