Я пытаюсь загрузить файл с контроллером AngularJS и Spring Boot. У меня есть 2 проблемы:Не удается загрузить файл с помощью Angular and Spring Boot
1) Когда я использую HTML-форму 'submit' , я получаю превышен размер, хотя я установил максимальный размер файла на 128M. Код выглядит так:
public class AppConfig {
@Bean
public MultipartConfigElement multipartConfigElement() {
factory.setMaxFileSize("128MB");
factory.setMaxRequestSize("128MB");
return factory.createMultipartConfig();
}
}
Похоже, что Spring игнорирует эти настройки.
2) Когда я пытаюсь загрузить файл, я получаю ошибку:
org.springframework.web.multipart.MultipartException: The current request is not a multipart request
Угловой контроллер выглядит следующим образом:
$scope.uploadFile=function(){
var formData=new FormData();
formData.append("file",file.files[0]);
$http.post('/content-files/upload /', file.files[0], {
transformRequest: function(data, headersGetterFunction) {
return data; // do nothing! FormData is very good!
},
headers: {'Content-Type': undefined }
})
.success(function(){
console.log('Post Succeded !');
})
.error(function(){
console.log('Post Failed .');
});
}
и контроллер Spring выглядит следующим образом:
@RequestMapping(value = "/content-files/upload/", method = RequestMethod.POST )
public @ResponseBody String handleFileUpload( @RequestParam("file") MultipartFile file) {
System.out.println("BrandController.uploadMultipart()");
String name=file.getName();
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
BufferedOutputStream stream =
new BufferedOutputStream(new FileOutputStream(new File(name)));
stream.write(bytes);
stream.close();
return "You successfully uploaded " + name + "!";
} catch (Exception e) {
return "You failed to upload " + name + " => " + e.getMessage();
}
} else {
return "You failed to upload " + name + " because the file was empty.";
}
}
Я попытался изменить контроллер JS для:
$http.post('/content-files/upload /', file.files[0], {
headers: { 'Content-Type': undefined },
transformRequest: angular.identity
})
, но я получаю ту же ошибку, что и выше. При попытке изменения контроллера JS для:
headers: { 'Content-Type': 'multipart/form-data' },
transformRequest: angular.identity
Я получаю ошибку the request was rejected because no multipart boundary was found
.
Кажется, что я пробовал все комбинации с параметрами и до сих пор ничего не работал. Что мне нужно сделать, чтобы загрузить этот файл?
попробуйте использовать 'jQuery Fileupload' – EpicPandaForce