Рубрики
Без рубрики

Spring MVC не удалось преобразовать значение свойства в форме загрузки файла

– Spring MVC не удалось преобразовать значение свойства в форме загрузки файла

Проблема

В приложении Spring MVC при нажатии на кнопку загрузки файла возникает следующая ошибка преобразования типа свойства?

Не удалось преобразовать значение свойства типа [org.springframework.web.multipart.commons. CommonsMultipartFile] к требуемому типу [байт[]] для файла свойств; вложенным исключением является java.lang. Исключение IllegalArgumentException: Не удается преобразовать значение типа [org.springframework.web.multipart.commons. CommonsMultipartFile] к требуемому типу [байт] для файла свойств [0]: Редактор свойств [org.springframework.beans.редакторы свойств. CustomNumberEditor] возвращено неподходящее значение

Вот контроллер SimpleFormController …

public class FileUploadController extends SimpleFormController{
	
	public FileUploadController(){
		setCommandClass(FileUpload.class);
		setCommandName("fileUploadForm");
	}
	//...
	
public class FileUpload{
	
	byte[] file;
	//...
}

Решение

Это распространенная проблема при обработке загруженного файла в Spring MVC, который не может автоматически преобразовать загруженный файл в массив байтов. Чтобы это работало, вам необходимо зарегистрировать пользовательский редактор ( ByteArrayMultipartFileEditor ) в методе Simpleformcontroller InitBinder() , который поможет 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());
		
	}
	//...

Оригинал: “https://mkyong.com/spring-mvc/spring-mvc-failed-to-convert-property-value-in-file-upload-form/”