2017-09-20 5 views
0

データベースに画像を保存しようとしていますが、このエラーが発生しました。どこが間違っていますか?画像をデータベースにアップロード:タイプの値を変換できません

JSP

<form:form class="form-horizontal" method="post" 
    modelAttribute="bookForm" action="${bookActionUrl}" enctype="multipart/form-data"> 
    <spring:bind path="image"> 
     <div class="form-group ${status.error ? 'has-error' : ''}"> 
      <label class="col-sm-2 control-label"><th><spring:message 
         code="label.image" /></th></label> 
      <div class="col-sm-10"> 
       <form:label for="image" path="image">Image</form:label> 
       <form:input path="image" type="file" /> 
       <form:errors path="image" class="control-label" /> 
      </div> 
     </div> 
    </spring:bind> 
</form:form> 

コントローラ

public String saveBook(@ModelAttribute("bookForm") @Validated Book book, BindingResult result, Model model, @RequestParam CommonsMultipartFile[] image, 
      final RedirectAttributes redirectAttributes) throws IOException { 

    for (CommonsMultipartFile aFile : image) { 
     System.out.println("Saving file: " + aFile.getOriginalFilename()); 
     book.setImage_name(aFile.getOriginalFilename()); 
     book.setImage(aFile.getBytes()); 
     System.out.println("Added"); 
    } 

    if (result.hasErrors()) { 
     model.addAttribute("genreList", populateDefaultModel(model)); 
     return "booksView/bookform"; 
    } else { 

     redirectAttributes.addFlashAttribute("css", "success"); 
     if (book.isNew()) { 
      // System.out.println(book.getId()); 
      redirectAttributes.addFlashAttribute("msg", "book added successfully!"); 
     } else { 
      redirectAttributes.addFlashAttribute("msg", "book updated successfully!"); 
     } 
     bookService.saveOrUpdate(book); 
     // POST/REDIRECT/GET 
     return "redirect:/motsach/"; // + book.getId(); 
    } 
} 

multipartResolver

@Bean(name = "multipartResolver") 
public CommonsMultipartResolver getCommonsMultipartResolver() { 
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); 
    multipartResolver.setMaxUploadSize(20971520); // 20MB 
    multipartResolver.setMaxInMemorySize(1048576); // 1MB 
    return multipartResolver; 
} 

DAOを実装

public void save(Book book) { 
    // TODO Auto-generated method stub 
    KeyHolder keyHolder = new GeneratedKeyHolder(); 

    String sql = "INSERT INTO Books(TENSACH, TACGIA, NHANXET, TINHTRANG, THELOAI, IMAGE, IMAGE_NAME) " 
      + "VALUES (:tensach, :tacgia, :nhanxet, :tinhtrang, :theloai, :image, :image_name)"; 

    namedParameterJdbcTemplate.update(sql, getSqlParameterByModel(book), keyHolder); 
    book.setId(keyHolder.getKey().intValue()); 
} 

モデル

Integer book_ID; 
String tensach; 
String tacgia; 
String nhanxet; 
String tinhtrang; 
List<String> theloai; 
byte[] image; 
String image_name; 
String data; 

エラー:

Failed to convert property value of type org.springframework.web.multipart.commons.CommonsMultipartFile to required type byte[] for property image; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type org.springframework.web.multipart.commons.CommonsMultipartFile to required type byte for property image[0]: PropertyEditor [org.springframework.beans.propertyeditors.CustomNumberEditor] returned inappropriate value of type org.springframework.web.multipart.commons.CommonsMultipartFile`

+0

パラメータとして 'CommonsMultipartFile []'があります。ファイルは1つしかありませんか? '[]'を削除してみてください。 –

+0

私はJack Flampの診断に同意します。それが理にかなっているわけではありません。 –

答えて

0

はあなたのすべてをありがとう、私はそれを考え出しました。すべてうまくいっていますが、それらのチェックコードはエラーの原因になります。私はそれらを削除して完了する必要があります!

if (result.hasErrors()) { 
    model.addAttribute("genreList", populateDefaultModel(model)); 
    return "booksView/bookform"; 
} else { 
関連する問題