Я работаю со следующей средой. 1. IDE eclipse mars (4.5.2) 2. Gradle 3. Весенний ботинок (встроен в tomcat) 4. Угловые Js с ворчанием.Изображение не может обрабатываться весной загрузки REST framework на внешнем tomcat по методу POST. Ошибка возврата 404
Задача: Я хочу загрузить изображение на AWS S3. Когда я запускался локально со встроенным tomcat с командой «spring bootrun» и загружал файл из вызова bowser/Postman API, изображение загружалось отлично.
Но когда я делаю военный файл командой gradle war и запускаю его внутри tomcat 7 или tomcat 8 и выполняю ту же задачу, оставшийся контроллер весенней загрузки не смог найти файл изображения.
Пожалуйста, помогите мне преодолеть эту странную проблему.
Информация о файле:
@RestController
@RequestMapping("/profilePicture")
public class ProfileImageUploadController extends BaseController {
@Autowired
private ImageStoreOnAws imageStoreOnAws;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ResponseEntity<Map<String, Object>> getPictureUploadUrl(@AuthenticationPrincipal OttaAccountDetails principal, MultipartHttpServletRequest request) {
Map<String, Object> response = new HashMap<>();
System.err.println("REQUEST---------------->"+request.getContentLength());
System.err.println("\nagain info---------------->"+request.getRequestURI());
MultipartFile multiFile = request.getFile("profile_pic");
System.err.println("Multipart file --------->"+multiFile);
System.err.println("\n Content Type --------->"+request.getContentType());
//String pictureUploadUrl = displayPictureImageStore.uploadUrl("/session/picture/" + principal.getUserId(), 10485760);
response = imageStoreOnAws.uploadProfilePicture(principal.getUserId(), multiFile);
return new ResponseEntity(response, HttpStatus.OK);
}
Почтальон API вызова: http://localhost:8080/profilePicture/upload (. Он отлично работает локально Но когда я бежал внутри кота с войны он не работает локально)
Gradle файл (порционная кода):
apply plugin: 'war'
war {
baseName = 'otta-web'
version = '1.0-SNAPSHOT'
}
version = '1.0-SNAPSHOT'
bootRepackage.enabled = false;
bootRun.enabled = true;
Выход: печать дает следующий результат.
ЗАПРОС ----------------> 1818 снова информация ---------------->/profilePicture/upload Multipart file ---------> null Тип содержимого ---------> multipart/form-data; граница = -------------------------- 182405819892384390851841
Точный результат должен быть, как показано ниже:
ЗАПРОС ----------------> 1818
Дополнительная информация ---------------->/profilePicture/upload Многостраничный файл - -------> org.springframework.web.multipart.su[email protected]181b1cf4
Тип контента ---------> multipart/form-data; граница = -------------------------- 341504561441584510876671
Он уже добавлен.Пожалуйста, смотрите ниже: @Override protected SpringApplicationBuilder configure (приложение SpringApplicationBuilder) { return application.sources (applicationClass); } – Rashed
Да, я добавил правильное имя входного файла. Я также проверил с клиентом почтальона с именем ввода «profile_pic». Но получил тот же результат. – Rashed
Он отлично работает для меня, и я пробовал эти шаги ... 1) изменил пакет на войну в pom.xml 2) изменил зависимость tomcat к предоставленному в pom.xml 3) расширенный класс SpringBootServletInitializer в файле класса приложения и переопределенный метод configure 4) дал правильное имя входному файлу –