2012-01-22 96 views
-4

我想下面的代碼在servlet中進行下載鏈接。但是這不起作用。請檢查或給我另一個代碼或方法...下載鏈接在servlet中

public class Downlord1 extends HttpServlet { 
    int BYTES_DOWNLOAD=1024; 
protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8"); 
    PrintWriter out = response.getWriter(); 
    try { 
     response.setHeader("Content-Disposition","attachment;Filename=dp.jpg"); 
     ServletContext ctx=getServletContext(); 
     InputStream is=ctx.getResourceAsStream("/images/krishna.jpg"); 
     int read=0; 
     byte[] bytes=new byte[BYTES_DOWNLOAD]; 
     OutputStream os=response.getOutputStream(); 
     while((read=is.read(bytes))!=-1) 
     { 
     os.write(bytes,0, read); 

     } 
     os.flush(); 
     os.close(); 


    } finally {    
     out.close(); 
    } 
} 

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> 
/** 
* Handles the HTTP <code>GET</code> method. 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Handles the HTTP <code>POST</code> method. 
* @param request servlet request 
* @param response servlet response 
* @throws ServletException if a servlet-specific error occurs 
* @throws IOException if an I/O error occurs 
*/ 
@Override 
protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    processRequest(request, response); 
} 

/** 
* Returns a short description of the servlet. 
* @return a String containing servlet description 
*/ 
@Override 
public String getServletInfo() { 
    return "Short description"; 
}// </editor-fold> 

}

+5

什麼不行?你期望它做什麼,它做什麼呢?有什麼異常?如果是這樣,什麼是堆棧跟蹤? –

+1

「請檢查或給我另一種代碼或方法」是否有任何機會給我們付款? – emaillenin

回答

2

更改內容類型image/jpeg

刪除PrintWriter out = response.getWriter(); - 它不使用,它可能會導致問題調用response.getWriter.getOutputStream不止一次。