如何使用Spring MVC在DB中保留Image

时间:2012-09-26 12:54:05

标签: java spring hibernate spring-mvc file-upload

如何使用Spring MVC3在数据库中保留图像

控制器:

public String postAdd(@ModelAttribute("employeeAttribute") @Valid Employee  employee,   BindingResult result,@RequestParam("file") MultipartFile   file) throws Exception{

       byte[] bFile=null;

       System.out.println("File Name......"+file.getName());

        if (!file.isEmpty()) {

          bFile = new byte[(int) file.getSize()];
        FileInputStream fileInputStream = new FileInputStream(file.getOriginalFilename());         
             fileInputStream.read(bFile);
             fileInputStream.close();
            }


              employee.setImage(bFile);

     employeeServiceImpl.add(employee);

}

Jsp Page:

     <c:url var="saveEmp" value="/manam/mobee/employee/add"/>
       <form:form modelAttribute="employeeAttribute" method="POST" action="${saveEmp}"          enctype="multipart/form-data" >
      <form:label path="image">Image</form:label>
       <input type="file" name="file" id="file"></input>

这里我发送C:\ Users \ Public \ Pictures \ Sample Pictures \ Desert Landscape.jpg文件但是   FileInputStream只需要Landscape.jpg。    请建议如何为FileInputStream设置完整的文件路径。

这里我收到java.io.FileNotFoundException:Forest.jpg(系统找不到指定的文件)Exception。

2 个答案:

答案 0 :(得分:0)

原始文件名是最终用户计算机上文件的名称。您的Spring MVC应用程序在您的服务器计算机上运行。您不能使用原始文件名,希望在最终用户计算机上找到绝对文件名,甚至更少尝试使用此名称读取文件。

要获取上传文件的内容,请使用MultipartFile.getBytes()MultipartFile.getInputStream()

答案 1 :(得分:0)

您需要从MultipartFile获取字节:

 bFile = file.getBytes();
 employee.setImage(bFile);