Reactjs React本机上载映像Spring boot

Reactjs React本机上载映像Spring boot,reactjs,spring,spring-boot,upload,native,Reactjs,Spring,Spring Boot,Upload,Native,我正在尝试将一个映像从react本机应用程序上载到JavaSpring引导服务器,但无法使其正常工作 chrome控制台中来自应用程序的请求为: userimage FormData {_parts: Array(1)}_parts: Array(1)0: Array(2)0: "photo"1: name: "file_photo"uri: "content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%

我正在尝试将一个映像从react本机应用程序上载到JavaSpring引导服务器,但无法使其正常工作

chrome控制台中来自应用程序的请求为:

userimage FormData {_parts: Array(1)}_parts: Array(1)0: Array(2)0: "photo"1: name: "file_photo"uri: "content://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F47/ORIGINAL/NONE/226557028"__proto__: Objectlength: 2__proto__: Array(0)length: 1__proto__: Array(0)__proto__: Object
后端端的错误是:

Servlet[dispatcherServlet]在具有路径的上下文中的Servlet.service() []引发异常[请求处理失败;嵌套异常为 org.springframework.web.multipart.MultipartException:未能分析 多部分servlet请求;嵌套异常为java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: 请求被拒绝,因为找不到具有的多部分边界] 根本原因

org.apache.tomcat.util.http.fileupload.FileUploadException: 请求被拒绝,因为找不到多部分边界

Spring引导控制器:
@PostMapping(value=“/signup”,consumes=MediaType.MULTIPART\u FORM\u DATA\u value)
公共响应注册用户(@RequestParam(“照片”)多部分文件照片){
...
}
反应本机代码:
openImagePicker=()=>{
ImagePicker.showImagePicker(this.options,异步响应=>{
this.setState({originUri:response.uri})
const file=new FormData();
file.append('photo'{
uri:this.state.originUri,
名称:'file_photo'
});
console.log('调整大小前的照片:',文件)
//这里我调用register函数(file)
}
函数寄存器(userImage){
log('来自寄存器api的照片:',文件)
返回axios({method:'post',
baseURL:constants.BASE\u URL,
url:“/api/auth/signup”,
标题:{
“内容类型”:“多部分/表单数据”
},
数据:userImage,
})
。然后(res=>{
返回资源数据
} ) 
.catch(错误=>{
console.log('错误请求api:',错误)
});
}

我已经设法修复了它:

反应本机:

--从图像上传组件

openImagePicker = () => {
    ImagePicker.showImagePicker(this.options, async response => {
      this.setState({originUri: response.uri})
      let timestamp = +new Date;
      let fileName = timestamp + '_' + response.fileName;
      if (response.didCancel) {
          console.log('User cancelled image picker')
          return
      } else if (response.error) {
          console.log('ImagePicker Error: ', response.error)
          return
      } else if (response.customButton) {
          console.log('User tapped custom button: ', response.customButton)
          return
      } else {
          const source = { uri: response.uri };
          this.setState({
            avatarSource: source,
          });
      }


      let { height, width, quality, format, avatarSource } = this.state

      // Resize and post the thumb 
      const resizedImageUri = await ImageResizer.createResizedImage(
          this.state.originUri,
          this.state.height,
          this.state.width,
          this.state.format,
          this.state.quality
      ).then(({uri}) => {
        let imageProperties = {
          uri: uri,
          name: fileName,
          type: 'image/png',
        }
        this.props.onUpload(imageProperties);
      })
    })
  }
--API注册调用

export function register(name, username, email, password, imageProperties) {
  let formDataPayload = new FormData();
  //IMPORTANT !!!!! this picture element form needs 3 parameters !!!!! : URL, NAME and TYPE
  formDataPayload.append('photo', {
    uri: imageProperties.uri,
    name: imageProperties.name,
    type: 'image/png',
  });
  formDataPayload.append('name', name);
  formDataPayload.append('username', username);
  formDataPayload.append('email', email);
  formDataPayload.append('password', password);
  return request({method: 'post', 
                  url: '/api/auth/signup/',
                  headers: {
                    'Content-Type': 'multipart/form-data'
                  },
                  data: formDataPayload
                  })
}
JAVA SPRING启动:

@PostMapping(value = "/api/auth/signup/")
    public ResponseEntity<?> signupUser(HttpServletRequest request,
                                          @RequestParam("photo") MultipartFile photo,
                                          @RequestParam("name") String name,
                                          @RequestParam("username") String username,
                                          @RequestParam("email") String email,
                                          @RequestParam("password") String password,
                                        ) throws IOException {
@PostMapping(value=“/api/auth/signup/”)
公共响应注册用户(HttpServletRequest),
@RequestParam(“照片”)多部分文件照片,
@RequestParam(“名称”)字符串名称,
@RequestParam(“用户名”)字符串用户名,
@RequestParam(“电子邮件”)字符串电子邮件,
@RequestParam(“密码”)字符串密码,
)抛出IOException{

你好,我现在也在同一条船上,你有没有想到怎么做?嗨@Randomboiguy我在这里发布了对我有效的解决方案
@PostMapping(value = "/api/auth/signup/")
    public ResponseEntity<?> signupUser(HttpServletRequest request,
                                          @RequestParam("photo") MultipartFile photo,
                                          @RequestParam("name") String name,
                                          @RequestParam("username") String username,
                                          @RequestParam("email") String email,
                                          @RequestParam("password") String password,
                                        ) throws IOException {