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