2012-12-03 3 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를 반환하지만 URL을 파일 유형으로 어떻게 바꿀 수 있습니까? – arjun3037

+0

andrew 당신은 내가 올바른 방법으로해야 할 일을 제안 할 수 있습니다 .. 나는 그 이미지를 클릭하여 다운로드하고 싶습니다 ... – 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); 
      } 
    } 
관련 문제