Spring MVC не удалось преобразовать значение свойства в форму загрузки файла
проблема
В приложении Spring MVC при нажатии кнопки загрузки файла возникает следующая ошибка преобразования типа свойства?
_
Не удалось преобразовать значение свойства типа [org.springframework.web.multipart.commons.CommonsMultipartFile] в требуемый тип [byte []] для файла свойств; вложенное исключение - java.lang.IllegalArgumentException: не удается преобразовать значение типа [org.springframework.web.multipart.commons.CommonsMultipartFile] в требуемый тип [байт] для файла свойств [0]: PropertyEditor [org.springframework.beans.propertyeditors. CustomNumberEditor] вернул недопустимое значение_
Вот SimpleFormController ...
public class FileUploadController extends SimpleFormController{ public FileUploadController(){ setCommandClass(FileUpload.class); setCommandName("fileUploadForm"); } //... public class FileUpload{ byte[] file; //... }
Решение
Это распространенная проблема при обработке загруженного файла в Spring MVC, который не может автоматически преобразовать загруженный файл в байтовые массивы. Чтобы заставить его работать, вы должны зарегистрировать собственный редактор (ByteArrayMultipartFileEditor) в методеinitBinder() SimpleFormController, чтобы Spring конвертировал загруженный файл в байтовый массив.
public class FileUploadController extends SimpleFormController{ public FileUploadController(){ setCommandClass(FileUpload.class); setCommandName("fileUploadForm"); } @Override protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws ServletException { // Convert multipart object to byte[] binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor()); } //...