Spring MVC n'a pas réussi à convertir la valeur de la propriété dans le formulaire de téléchargement de fichier
Problème
Dans l'application Spring MVC, en cliquant sur le bouton de téléchargement de fichier, il rencontre l'erreur de conversion de type de propriété suivante?
_
Échec de la conversion de la valeur de propriété de type [org.springframework.web.multipart.commons.CommonsMultipartFile] en type requis [byte []] pour le fichier de propriétés; l'exception imbriquée est java.lang.IllegalArgumentException: Impossible de convertir la valeur de type [org.springframework.web.multipart.commons.CommonsMultipartFile] en type requis [octet] pour le fichier de propriétés [0]: PropertyEditor [org.springframework.beans.propertyeditors. CustomNumberEditor] a renvoyé une valeur inappropriée_
Voici le SimpleFormController…
public class FileUploadController extends SimpleFormController{ public FileUploadController(){ setCommandClass(FileUpload.class); setCommandName("fileUploadForm"); } //... public class FileUpload{ byte[] file; //... }
Solution
Il s'agit d'un problème courant dans la gestion du fichier téléchargé dans Spring MVC, qui ne peut pas convertir automatiquement le fichier téléchargé en tableaux d'octets. Pour que cela fonctionne, vous devez enregistrer un éditeur personnalisé (ByteArrayMultipartFileEditor) dans la méthodeinitBinder() de SimpleFormController pour guider Spring pour convertir le fichier téléchargé en tableau d'octets.
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()); } //...