Я пытаюсь создать страницу, на которой пользователи могут публиковать изображения вместе со своими данными.Теперь, когда я тестирую сервисы весенней загрузки от почтальона, я успешно могу получить файлы в сервисе.Как я пытаюсь сделать то же самое с angular5, многочастный файл не распознается в сервисе и всегда получает пустой массив.
@RequestMapping(value= "/upload", method=RequestMethod.POST)
public AppResponse<User> saveUser(@RequestParam("userId") Long userId, @RequestParam("files") List<MultipartFile> files, HttpServletRequest request){
int i=0;
User user=userLogic.getUserById(userId);
String[] imageUrls= new String[files.size()];
try {
for(MultipartFile file:files) {
if(file.getContentType().equals("image/jpeg") || file.getContentType().equalsIgnoreCase("image/pjpeg")) {
ObjectMetadata meta= new ObjectMetadata();
meta.setContentType(file.getContentType());
meta.setContentDisposition(userId+"_"+i);
PutObjectResult result=s3Client.putObject(PHOTO_DIRECTORY,getFileName(userId, i),file.getInputStream(),meta);
imageUrls[i]=PHOTO_DIRECTORY+"/"+getFileName(userId, i);
} else {
throw new InvalidFileFormatException("This filetype is not accepted");
}
}
user.setActorPhotos(imageUrls);
userLogic.saveUser(user);
return new AppResponse<>(false, "Success");
}
catch(InvalidFileFormatException | IOException e) {
System.err.println("Exception in file upload");
return new AppResponse<>(true, "Failure");
}
А мой угловой сервисный код выглядит следующим образом
postPhotos(files: any,userId:any): Observable<any> {
let formData = new FormData();
formData.append("files",files,"files");
return this.http.post<Result>(URLConfig.postPhotos+"?userId="+userId, formData);
}
Я попытался добавить заголовки, такие как multipart / form-data из angular, а также установить его как неопределенное.В любом случае я получаю ошибку.Я много раз искал stackoverflow перед публикацией здесь и пробовал все эти решения без какой-либо помощи.
Заранее спасибо за помощь.