Я пытаюсь загрузить изображение из реагирующего нативного приложения на сервер загрузки Java, но не могу заставить его работать.
Запрос в консоли 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.service () для сервлета [dispatcherServlet] в контексте с исключением пути path [] [Обработка запроса не удалась;вложенным исключением является org.springframework.web.multipart.MultipartException: не удалось проанализировать многочастный запрос сервлета;Вложенное исключение: java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: запрос был отклонен, так как не было найдено многочастной границы] с основной причиной
org.apache.tomcat.util.http.fileupload.FileUploadException: запрос был отклонен, поскольку не было найдено многокомпонентной границы
Spring boot controller:
@PostMapping(value = "/signup", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<?> signupUser(@RequestParam("photo") MultipartFile photo) {
...
}
React native code:
openImagePicker = () => {
ImagePicker.showImagePicker(this.options, async response => {
this.setState({originUri: response.uri})
const file = new FormData();
file.append('photo', {
uri: this.state.originUri,
name: 'file_photo'
});
console.log('photo before resize: ', file)
//here i call the register function(file)
}
function register(userImage) {
console.log('photo from register api: ', file)
return axios({ method: 'post',
baseURL: constants.BASE_URL,
url: '/api/auth/signup',
headers: {
'Content-Type': 'multipart/form-data'
},
data: userImage,
})
.then(res => {
return res.data
} )
.catch( error => {
console.log('error request api: ', error)
});
}