2016-12-29 8 views
0

Я работаю со следующей средой. 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

ответ

0

Ваш класс приложения должен расширить SpringBootServletInitializer класс и у вас есть для переопределения метода configure. Пожалуйста, следуйте этим link для получения более подробной информации

Edit: Если вы сделали все необходимые настройки, то одна вещь, которую я мог бы предложить это, чтобы убедиться, что вы дали правильное имя для входного файла. В этом случае это должно быть profile_pic

+0

Он уже добавлен.Пожалуйста, смотрите ниже: @Override protected SpringApplicationBuilder configure (приложение SpringApplicationBuilder) { return application.sources (applicationClass); } – Rashed

+0

Да, я добавил правильное имя входного файла. Я также проверил с клиентом почтальона с именем ввода «profile_pic». Но получил тот же результат. – Rashed

+0

Он отлично работает для меня, и я пробовал эти шаги ... 1) изменил пакет на войну в pom.xml 2) изменил зависимость tomcat к предоставленному в pom.xml 3) расширенный класс SpringBootServletInitializer в файле класса приложения и переопределенный метод configure 4) дал правильное имя входному файлу –

 Смежные вопросы

  • Нет связанных вопросов^_^