2017-03-16 95 views
0

我以字節格式在mysql數據庫表中存儲圖像。當我從數據庫中檢索那個圖像時,我越來越像這樣。 enter image description here如何從MySQL使用彈簧和休眠圖像列表

所以調度員servlet.xml中如下:

<beans:bean id="multipartResolver" 
     class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 

     <!-- setting maximum upload size --> 
     <beans:property name="maxUploadSize" value="100000" /> 

    </beans:bean> 

的pom.xml

<!-- Apache Commons FileUpload --> 
<dependency> 
    <groupId>commons-fileupload</groupId> 
    <artifactId>commons-fileupload</artifactId> 
    <version>1.3.1</version> 
</dependency> 

<!-- Apache Commons IO --> 
<dependency> 
    <groupId>commons-io</groupId> 
    <artifactId>commons-io</artifactId> 
    <version>2.4</version> 
</dependency> 

driversList.jsp

<div style="color: teal; font-size: 20px">List Of Drivers</div> 
      <c:if test="${!empty listDrivers}"> 
       <table border="1" bgcolor="black" width="600px"> 
        <tr 
         style="background-color: teal; color: white; text-align: center;" 
         height="40px"> 
         <th width="60">Name</th> 
         <th width="80">License Number</th> 
         <!-- <th width="80">Password</th> --> 
         <th width="80">Phone</th> 

         <th width="80">Password</th> 
         <th width="80">Address</th> 
         <th width="80">Photo</th> 

        </tr> 
        <c:forEach items="${listDrivers}" var="driver"> 
         <tr 
          style="background-color: white; color: black; text-align: center;" 
          height="30px"> 

          <td>${driver.name}</td> 
          <td>${driver.license}</td> 
          <td>${driver.number}</td> 

          <td>${driver.password}</td> 
          <td>${driver.address}</td> 
          <td><img src="/momcab1/myImage/imageDisplay?id=${driver.id}"/></td> 

         </tr> 
        </c:forEach> 
       </table> 
      </c:if> 
      <!-- Content data end --> 
      <br> <br> <br> <br> <br> <br> <br> 
      <br> <br> <br> 
     </div> 

DriverController.java

@RequestMapping(value = "/DriversList", method = RequestMethod.GET) 
    public String listUsers(Model model,HttpServletRequest req,HttpServletResponse res) { 

     HttpSession session =req.getSession(); 
     if(session.getAttribute("emailId")==null) 
     { 
      return "redirect:/login"; 
     } 
     System.out.println("MY NAME IS GO PINK"); 
     model.addAttribute("listDrivers", this.driverService.listDrivers()); 
     return "driversList"; 
    } 

ImageController.java

@Controller 
@RequestMapping("/myImage") 
public class ImageController { 

    @Value("${login_session_token_timeout_mnts}") 
    private String loginSessionTokenTimeoutMnts; 

    private DriverService driverService; 

    @Autowired(required = true) 
    @Qualifier(value = "driverService") 
    public void setDriverService(DriverService ds) { 
     this.driverService = ds; 
    } 

    @RequestMapping(value = "/imageDisplay", method = RequestMethod.GET) 
     public void showImage(@RequestParam("id") Integer id, HttpServletResponse response,HttpServletRequest request) 
       throws ServletException, IOException{ 


     Driver item = driverService.getDriverById(id);  
     response.setContentType("image/jpeg, image/jpg, image/png, image/gif"); 
     response.getOutputStream().write(item.getBlobImg()); 


     response.getOutputStream().close(); 
    } 

} 

Driver.java

@Column(name = "photo") 
    private byte[] blobImg; 

所以在這裏當一個人點擊 「驅動程序列表」,然後將請求映射去的DriverController.java"/DriversList"但在我driversList.jsp有是從mysql數據庫表中顯示的圖像。但是當頁面加載時,它甚至不會進入"<img src>" 中給出的控制器請求映射,並且它顯示如下所示的「十字標記」。任何幫助都將被理解。

感謝你

,我試圖在這個enter link description here

+0

我想沒有人有關於從MySQL數據庫獲取圖像的想法.GREAT !!!!!!! –

+0

我會在你生氣的人的底部張貼一個例子你! HAHAH – Snickers3192

回答

0

給出的代碼這Spring MVC: How to return image in @ResponseBody?之前得到答覆。你可能會缺少編碼或類似的東西是最有可能的候選人。但有什麼關係,只需使用其他人正在使用的方法,即每個人都知道作品。

作爲

public class HELLOWORLD { 


    class FooEntity { 

    // TODO - ids and other stuff 

    @Lob @Basic(fetch = FetchType.LAZY) 
    private byte[] imageBytes; 

    public byte[] getImageBytes() { 
     return imageBytes; 
    } 
    } 

    interface FooService { 
    public FooEntity get(int id); 
    } 


    public static byte[] bufferedImageToByteArray(BufferedImage img) throws IOException 
    { 
     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     ImageIO.write(img, "png", baos); // I think this doesn't matter, I have jpg here 
     return baos.toByteArray(); 
    } 

    FooService fooService; 

    @RequestMapping(value = "/foo/image/{id}") 
    @ResponseBody 
    public byte[] GetUserImageTiny(Model model, @PathVariable Integer id) throws IOException 
    { 
     FooEntity fooEntity = fooService.get(id); 
     byte[] imageInByte = fooEntity.getImageBytes(); 
     // you may be able to just go: 
     // return imageInByte; 
     // but I actually create the image: 
     InputStream in = new ByteArrayInputStream(imageInByte); 
     BufferedImage bImageFromConvert = ImageIO.read(in); // you could then debug here, write the image to a file to test if it's all good. 
     // I sometimes resize the image too which I would do here 
     // otherwise just return the image 
     return bufferedImageToByteArray(bImageFromConvert); 
    } 

} 
0

得到的答覆的例子...........

它我的另外的圖像數據庫的是wrong.So我修改的代碼添加圖像數據庫

@RequestMapping(value = "/Drivers/add", method = RequestMethod.POST) 
    public String addUser(@ModelAttribute("driver") Driver driver,BindingResult result,@RequestParam("blobImg") MultipartFile blobImg) { 

     if (driver.getId() == 0) { 
      // new user, add to DB 

      System.out.println("Name:" + driver.getName()); 

      System.out.println("File:" + blobImg.getSize()); 
      System.out.println("ContentType:" + blobImg.getContentType()); 

        try { 
         driver.setBlobImg(blobImg.getBytes()); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

       } 


       this.driverService.addDriver(driver); 





     return "redirect:/Drivers"; 

    } 

然後我通過此代碼

@RequestMapping(value = "/imageDisplay/{id}", method = RequestMethod.GET) 
     public String showImage(@PathVariable("id") int id, HttpServletResponse response,HttpServletRequest request) 
       throws ServletException, IOException{ 
System.out.println("Image isn't coming"); 
System.out.println("Id is"+id); 
     Driver item = driverService.getDriverById(id);  
       try { 
     response.setContentType("image/jpeg, image/jpg, image/png, image/gif"); 
     response.getOutputStream().write(item.getBlobImg()); 


     response.getOutputStream().close(); 
       } 
       catch(Exception e) { 
        e.printStackTrace(); 
       } 
     return "driversList"; 
    } 
取出