2012-12-03 46 views
0

我想單擊下載圖像。我已經設置了內容類型,但我無法寫入圖片作爲迴應。在控制器中,我得到了圖像的URL。單擊圖像下載圖像

String image=myimageUrl; 
File file = new File(image); 
String contentType = getServletContext().getMimeType(file.getName()); 
response.setBufferSize(DEFAULT_BUFFER_SIZE); 
response.setContentType(contentType); 
response.setHeader("Content-Length", String.valueOf(file.length())); 

對於寫入響應我用這個代碼

DataInputStream input = new DataInputStream(new FileInputStream(file)); 
ServletOutputStream output = response.getOutputStream(); 

在這裏輸入返回null

如何解決此問題?

+3

'file.exist()'? –

+0

file.exist()返回false.ok,但我怎樣才能將網址更改爲文件類型。 – arjun3037

+0

安德魯你能建議我該怎麼做正確的方式..我想要點擊下載該圖像... – arjun3037

回答

0

請檢查以下代碼。

上傳圖像到數據庫。

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 
     try { 
        String path=request.getParameter("h2"); 
        out.println(path); 
        Connection connection=null; 
        ResultSet rs = null; 
        PreparedStatement psmnt = null; 
        FileInputStream fis; 
        Class.forName("com.mysql.jdbc.Driver"); 
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/image", "root", "kshitij"); 
       File image = new File(path); 
        psmnt = connection.prepareStatement("insert into new1(id,imagepath)"+"values(?,?)"); 
        String s1=request.getParameter("h1"); 
        psmnt.setString(1,s1); 
        fis = new FileInputStream(image); 
        psmnt.setBinaryStream(2, (InputStream)fis, (int)(image.length())); 

       int s = psmnt.executeUpdate(); 
       if(s>0) { 
         out.println("Uploaded successfully !"); 
       } 
       else { 
       out.println("unsucessfull to upload image."); 
       } 
      } 
      catch (Exception ex) { 
        System.out.println("Found some error : "+ex); 
      } 

和用於下載圖像。

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 
     //response.setContentType("text/html;charset=UTF-8"); 
     PrintWriter out = response.getWriter(); 

      Connection connection = null; 
      ResultSet rs = null; 
      PreparedStatement psmnt = null; 
     InputStream sImage; 

      try { 
        Class.forName("com.mysql.jdbc.Driver").newInstance(); 
        connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/image", "root", "kshitij"); 
        psmnt = connection.prepareStatement("SELECT imagepath FROM new1 WHERE id = ?"); 
        psmnt.setString(1, "23"); 
        rs = psmnt.executeQuery(); 
       if(rs.next()) { 
         byte[] bytearray = new byte[1048576]; 
         int size=0; 
         sImage = rs.getBinaryStream(1); 
         //response.reset(); 
         response.setContentType("image/jpeg"); 
         while((size=sImage.read(bytearray))!= -1){ 
          response.getOutputStream().write(bytearray,0,size); 

         } 
       } 
      } 
      catch(Exception ex){ 
    //   out.println("error :"+ex); 
      } 
    }