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>
}
I am trying below code for making a download link in servlet. But this is not working. Please check or give me another code or method...
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>
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
将内容类型更改为
image/jpeg
。删除
PrintWriter out = response.getWriter();
- 未使用它,并且可能会导致多次调用response.getWriter
或.getOutputStream
出现问题。Change content type to
image/jpeg
.Remove
PrintWriter out = response.getWriter();
- it's not used and it can cause problems callingresponse.getWriter
or.getOutputStream
more than once.