Reactjs 使用axio react native将多个带有部件参数的图像上载到服务器

Reactjs 使用axio react native将多个带有部件参数的图像上载到服务器,reactjs,react-native,axios,image-upload,Reactjs,React Native,Axios,Image Upload,我正在尝试使用axio将多个图像上传到服务器,并将多个参数作为请求主体。基本上,下面是原生android中的请求,我正试图用react-native实现它 @Headers(HTTPService.NEEDS_AUTH_HEADER) @Multipart @POST("/api/post") Call<Post> create( @Part("title") RequestBody title,

我正在尝试使用axio将多个图像上传到服务器,并将多个参数作为请求主体。基本上,下面是原生android中的请求,我正试图用react-native实现它

@Headers(HTTPService.NEEDS_AUTH_HEADER)
        @Multipart
        @POST("/api/post")
        Call<Post> create(
                @Part("title") RequestBody title,
                @Part("content") RequestBody content,
                @Part("location") RequestBody location,
                @Part("category") RequestBody category,
                @Part("captions") List<RequestBody> captions,
                @Part List<MultipartBody.Part> parts
        );
这里是formDataArray:

photos.forEach(元素=>{
设formdata=new formdata();
append(“upload”,{uri:element,name:'image.jpg',键入:'image/jpg'})
formDataArray.push(formdata)
});


很遗憾,没有图像上载到服务器

假设您的
照片
数组包含上载照片的文件系统路径数组, 您的FormData应该像这样循环:

const data = new FormData()

photos.forEach((element, i) => {
  const newFile = {
    uri: element, type: 'image/jpg'
  }
  data.append('files', newFile)
});

然后,您可以将此变量
数据
附加到post请求,以将文件数组上载到服务器。

假设您的
照片
数组包含上载照片的文件系统路径数组,
const data = new FormData()

photos.forEach((element, i) => {
  const newFile = {
    uri: element, type: 'image/jpg'
  }
  data.append('files[]', newFile)
});
您的FormData应该像这样循环:

const data = new FormData()

photos.forEach((element, i) => {
  const newFile = {
    uri: element, type: 'image/jpg'
  }
  data.append('files', newFile)
});
然后,您可以将此变量
data
附加到post请求,以将文件数组上载到服务器

const data = new FormData()

photos.forEach((element, i) => {
  const newFile = {
    uri: element, type: 'image/jpg'
  }
  data.append('files[]', newFile)
});
医生说


文档说

将您的axios配置更改为“内容类型”:未定义的
更改为“内容类型”:“多部分/表单数据”。现在它说的是
“内容类型缺少边界”
这就是我输入未定义的原因。您是如何填充
表单数据数组的
?让我看看。
photos.forEach(element=>{formdata.append(“parts[]),{uri:element,name:'image.jpg',type:'image/jpg'}});formdata.append('title',postTitle);formdata.append('content',postContent);formdata.append('location',locationId);formdata.append('category',categoryId);
然后使用
formdata
执行axios post,不再使用formDataArray。将您的axios配置更改为
'Content-type':未定义的
'Content-type':'multipart/form data'
。现在显示为
”内容类型缺少边界
这就是我传入未定义的原因您如何填充
formDataArray
?让我看看。
photos.forEach(元素=>{formdata.append(“parts[]”,{uri:element,name:'image.jpg',type:'image/jpg'});formdata.append('title',postTitle);formdata.append('content',postContent);formdata.append('location',locationId);formdata.append('category',categoryId);
然后使用
formdata
执行axios post,不再使用formDataArray。虽然照片是2,但只上载了一个文件。它可以工作。附加新文件时必须使用不同的键。不需要使用不同的键,如果将多个文件附加到同一
formdata
key@Vivek_Neel你是怎么解决的这个?我的
数据
有2个数组,但当我尝试在后端php中回显时,它只显示1个数组object@Vivek_Neel在这种情况下,您需要为2个图像阵列提供2个FormData实例。虽然照片是2,但只上载了一个文件。它工作正常。添加新文件时必须使用不同的键。不需要使用不同的键,它应该如果将多个文件附加到同一
FormData
key@Vivek_Neel您是如何解决这个问题的?我的
数据
有2个数组,但当我尝试在后端php中回显时,它只显示1个数组object@Vivek_Neel在这种情况下,您需要为2个图像数组提供2个FormData实例