Spring MVCはファイルアップロードフォームのプロパティ値を変換できませんでした
問題
Spring MVCアプリケーションで、ファイルアップロードボタンをクリックすると、次のプロパティタイプ変換エラーが発生しますか?
_
タイプ[org.springframework.web.multipart.commons.CommonsMultipartFile]のプロパティ値をプロパティファイルに必要なタイプ[byte []]に変換できませんでした。ネストされた例外はjava.lang.IllegalArgumentExceptionです:タイプ[org.springframework.web.multipart.commons.CommonsMultipartFile]の値をプロパティファイル[0]に必要なタイプ[byte]に変換できません: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でアップロードされたファイルを処理する際の一般的な問題であり、アップロードされたファイルをバイト配列に自動的に変換できません。 これを機能させるには、SimpleFormControllerのinitBinder()メソッドにカスタムエディター(ByteArrayMultipartFileEditor)を登録して、アップロードされたファイルをバイト配列に変換するように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()); } //...