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());
}
//...