使用 axios react native 将多个图像上传到带有部分参数的服务器

Upload multiple images to server with part params using axio react native

我正在尝试使用带有多个参数的 axio 作为请求正文将多张图片上传到服务器。下面基本上是本机 android 中的请求,它试图在本机反应中执行此操作。

@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
        );

这就是我在 React 中尝试做的事情:

const config = {
      method: 'post',
      headers: {
        'NEEDS_AUTH': true,
        Accept: 'application/json',
        'Content-type': undefined

      },
      formDataArray,
      url: PATH_API_CREATE_POST,
      data: {
        title: postTitle,
        content: postContent,
        location: locationId,
        category: categoryId,

      }
    }

    axios(config).then(res => console.log('create post ', res)).catch(err => console.log('create post err', err.response)) 

这是 formDataArray :

photos.forEach(element => { let formdata = new FormData(); formdata.append("upload", { uri: element, name: 'image.jpg', type: 'image/jpg' }) formDataArray.push(formdata) });

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

假设您的 photos 数组包含上传照片的文件系统路径数组, 您的 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)
});

文档说 https://developer.mozilla.org/en-US/docs/Web/API/FormData/append#Example