байт [] из входного файла в spring mvc

#java #spring #spring-mvc

#java #spring #spring-mvc

Вопрос:

Как я могу получить байт [] из:

< тип ввода=»file» значение=»${restaurant.logo }» имя=»logo» /> в Spring MVC?

Я хочу иметь массив byte [], чтобы преобразовать его в base64. Но я не знаю, как просто преобразовать файл из входных данных в byte[].

Ответ №1:

 <form action="uploadLogo">
   <input type="file" ... />
</form>
  

и затем в @Controller

 @RequestMapping("/uploadLogo")
public String uploadLogo(@RequestParam MultipartFile logo) {
     byte[] bytes = logo.getBytes();
     String base64 = new String(Base64.encodeBase64(bytes), "ISO-8859-2");
}
  

(Base64 является частью commons-codec)

Комментарии:

1. как это сделать с помощью функции MultiActionAndView? Я получил: > общедоступный ModelAndView myrestaurantadd (запрос HttpServletRequest, > ответ HttpServletResponse, ресторан> ресторан)

2. просто добавьте аргумент метода к остальным

3. Когда я ввел requestparam в свои аргументы, я получил ошибку: не удалось создать экземпляр класса bean [org.springframework.web.multipart.MultipartFile]: указанный класс является интерфейсом

4. @RequestMapping(значение=»/myrestaurantadd.htm «, метод=RequestMethod. POST) общедоступная модель myrestaurantadd(запрос HttpServletRequest, ответ HttpServletResponse, ресторан restaurant, логотип @RequestParam MultipartFile) выдает исключение { Пользователь user = loggedUser.getLoggedUser(); байт[] байт = logo.getBytes(); Строка base64 = новая строка (Base64.encode(байты)); ресторан.setLogo(base64); возвращает новую ModelAndView(«перенаправление:mojekonto.htm#окно-три»); }

5. хм. попробуйте поместить его в качестве первого аргумента (а не последнего)

Ответ №2:

Взгляните на org.springframework.web.multipart.MultipartFile , который сможет обернуть загружаемый файл «из коробки» и имеет getBytes() метод для возврата содержимого файла как byte[] .

Вы также можете привязать byte[] поле к загруженному файлу, если вы действительно этого хотите — просто зарегистрировав ByteArrayMultipartFileEditor в качестве пользовательского редактора для вашего binder.