MultipartFile / blob problem saving in database

10,364

i found the problem in the jsp form i should specify enctype="multipart/form-data"

Share:
10,364
Elloumi Ahmed
Author by

Elloumi Ahmed

Updated on June 14, 2022

Comments

  • Elloumi Ahmed
    Elloumi Ahmed almost 2 years

    Hi i want to upload an image and store it the database i use spring mvc & hibernate

    here is the model

    import java.sql.Blob;
    import java.util.Date;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.Lob;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "article")
    public class Article {
    
    @Id
    @GeneratedValue
    @Column(name = "article_id")
    private Long articleId;
    
    @Column(name = "article_name", nullable = false, length=20)
    private String articleName;
    
    @Column(name = "article_desc", nullable = false)
    private String articleDesc;
    
    @Column(name = "date_added")
    private Date addedDate;
    
     @Lob
        private Blob content;
    public Article() {      
    }
    
    public Long getArticleId() {
        return articleId;
    }
    
    public void setArticleId(Long articleId) {
        this.articleId = articleId;
    }
    
    public String getArticleName() {
        return articleName;
    }
    
    public void setArticleName(String articleName) {
        this.articleName = articleName;
    }
    
    public String getArticleDesc() {
        return articleDesc;
    }
    
    public void setArticleDesc(String articleDesc) {
        this.articleDesc = articleDesc;
    }
    
    public Date getAddedDate() {
        return addedDate;
    }
    
    public void setAddedDate(Date addedDate) {
        this.addedDate = addedDate;
    }   
    
    public String toString(){
        return this.articleName;
    }
    
    public void setContent(Blob content) {
        this.content = content;
    }
    
    public Blob getContent() {
        return content;
    }
    

    }

    here is the controller (methode to save the article)

      @RequestMapping(value = "/save", method = RequestMethod.POST)
    public String save(
            @ModelAttribute("article") Article article,
            @RequestParam("file") MultipartFile file) {
    
    
    
        try {
            Blob blob = Hibernate.createBlob(file.getInputStream());
    
    
            article.setContent(blob);
    
        } catch (IOException e) {
            e.printStackTrace();
        }
    
        try {
             articleService.addArticle( article);
        } catch(Exception e) {
            e.printStackTrace();
        }
    
        return "redirect:/articles.html";
    }
    

    when i want to save a new article with my JSP form i have this errors

    33266 [http-8080-2] DEBUG org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver - Resolving exception from handler [net.roseindia.controller.ArticleController@10e8647]: org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.MultipartFile]: no matching editors or conversion strategy found 33270 [http-8080-2] DEBUG org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver - Resolving exception from handler [net.roseindia.controller.ArticleController@10e8647]: org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.MultipartFile]: no matching editors or conversion strategy found 33270 [http-8080-2] DEBUG org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver - Resolving exception from handler [net.roseindia.controller.ArticleController@10e8647]: org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipart.MultipartFile'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [org.springframework.web.multipart.MultipartFile]: no matching editors or conversion strategy found

    can any body help me