データベースに画像を保存しようとしていますが、このエラーが発生しました。どこが間違っていますか?画像をデータベースにアップロード:タイプの値を変換できません
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`
パラメータとして 'CommonsMultipartFile []'があります。ファイルは1つしかありませんか? '[]'を削除してみてください。 –
私はJack Flampの診断に同意します。それが理にかなっているわけではありません。 –