Проблема с Spring FileUpload

У меня есть следующий блок кода, который обрабатывает загрузку моего файла фотографии, которую я использую в своем веб-приложении Spring MVC. Я использую Spring MVC CommonsMultipartFileResolver для обработки загрузки файлов.

if(model.getPhoto() != null){
    if(!model.getPhoto().isEmpty()){
        MultipartFile file = model.getPhoto();
        String fileName = file.getOriginalFilename();
        String filePath = baseDirectory + fileName;
        FileOutputStream fos = new FileOutputStream(filePath);
         try 
         {
            fos.write(file.getBytes());
            agentProfile.setPhotoUri(fileName);
         } 
         catch (IllegalStateException e) 
         {
            System.out.println(e);

         }
         finally   
         {
             fos.close();
         }
    }
}

В моем файле app-servlet.xml у меня есть следующий код для настройки bean-объекта преобразователя MultipartFile.

 
 

У меня возникают случайные проблемы при загрузке фотографий.

1) Если я загружу фото меньшего размера, около 3 Кб или около того, оно будет успешно загружено.

2) Если я загружу фото немного большего размера, он создаст файл в каталоге, но размером 0 байт и выдаст следующее сообщение об ошибке.

 java.lang.IllegalStateException: File has been moved - cannot be read again
org.springframework.web.multipart.commons.CommonsMultipartFile.getBytes(CommonsMultipartFile.java:112)
com.mmz.admin.mvc.controller.AddAgentController.processFinish(AddAgentController.java:145)
org.springframework.web.servlet.mvc.AbstractWizardFormController.validatePagesAndFinish(AbstractWizardFormController.java:642)
org.springframework.web.servlet.mvc.AbstractWizardFormController.processFormSubmission(AbstractWizardFormController.java:492)
org.springframework.web.servlet.mvc.AbstractFormController.handleRequestInternal(AbstractFormController.java:265)
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Я пробовал несколько различных вариантов настройки преобразователя Multipart, например переключение его на обработку объекта CommonsMultipartFile в отличие от простого ] MultipartFile , но ничего не изменилось.

Я также попытался вручную настроить максимальный размер загрузки в bean-компоненте CommonsMultipartFileResolver с помощью следующего свойства.

   

также ничего не изменилось. Я не уверен, что по умолчанию CommonsMultipartResolver имеет размер файла, который может быть загружен, но это не мой вопрос.

Мне сказали, что проблема, с которой я столкнулся, связана с проблемой в синтаксическом анализаторе / обработчике Multipart, который использует Spring. У меня был недавний пост об этой же проблеме, и, поскольку была найдена новая информация, я хотел сделать репост с новой информацией. Старый пост можно найти по адресу Проблема CommonsMultipartFileResolver

Мне кажется, что я проверил почти все ресурсы в Интернете, чтобы найти дополнительную документацию, но не могу понять проблему.

Пожалуйста, помогите мне выяснить, что происходит с этим, и если есть лучшее, более простое решение, которое, возможно, может исследовать эти варианты, но я бы предпочел остаться с моим текущим методом, если я смогу найти решение.

РЕДАКТИРОВАТЬ

Мне сказали, что проблема, с которой я столкнулся, связана с проблемой в синтаксическом анализаторе / обработчике Multipart, который использует Spring. У меня был недавний пост об этой же проблеме, и, поскольку была найдена новая информация, я хотел сделать репост с новой информацией. Старый пост можно найти по адресу Проблема CommonsMultipartFileResolver

Мне кажется, что я проверил почти все ресурсы в Интернете, чтобы найти дополнительную документацию, но не могу понять проблему.

Пожалуйста, помогите мне выяснить, что происходит с этим, и если есть лучшее, более простое решение, которое, возможно, может исследовать эти варианты, но я бы предпочел остаться с моим текущим методом, если я смогу найти решение.

РЕДАКТИРОВАТЬ

Мне сказали, что проблема, с которой я столкнулся, связана с проблемой в синтаксическом анализаторе / обработчике Multipart, который использует Spring. У меня был недавний пост об этой же проблеме, и, поскольку была найдена новая информация, я хотел сделать репост с новой информацией. Старый пост можно найти по адресу Проблема CommonsMultipartFileResolver

Мне кажется, что я проверил почти все ресурсы в Интернете, чтобы найти дополнительную документацию, но не могу понять проблему.

Пожалуйста, помогите мне выяснить, что происходит с этим, и если есть лучшее, более простое решение, которое, возможно, может исследовать эти варианты, но я бы предпочел остаться с моим текущим методом, если я смогу найти решение.

РЕДАКТИРОВАТЬ и поскольку была найдена новая информация, захотелось сделать репост с новой информацией. Старый пост можно найти по адресу Проблема CommonsMultipartFileResolver

Мне кажется, что я проверил почти все ресурсы в Интернете, чтобы найти дополнительную документацию, но не могу понять проблему.

Пожалуйста, помогите мне выяснить, что происходит с этим, и если есть лучшее, более простое решение, которое, возможно, может исследовать эти варианты, но я бы предпочел остаться с моим текущим методом, если я смогу найти решение.

РЕДАКТИРОВАТЬ и поскольку была найдена новая информация, захотелось сделать репост с новой информацией. Старый пост можно найти по адресу Проблема CommonsMultipartFileResolver

Мне кажется, что я проверил почти все ресурсы в Интернете, чтобы найти дополнительную документацию, но не могу понять проблему.

Пожалуйста, помогите мне выяснить, что происходит с этим, и если есть лучшее, более простое решение, которое, возможно, может исследовать эти варианты, но я бы предпочел остаться с моим текущим методом, если я смогу найти решение.

РЕДАКТИРОВАТЬ Примечание. Я экспериментировал с загружаемыми фотографиями разного размера и считаю, что лимит, который позволяет мне загружать, составляет около 10 КБ. Все, что больше 10 КБ, приводит к его поломке и выдает ошибку, указанную выше.

9
задан Community 23 May 2017 в 12:34
поделиться