servlet 中的下载链接

发布于 2024-12-28 02:38:55 字数 2098 浏览 0 评论 0原文

我正在尝试下面的代码在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

相思碎 2025-01-04 02:38:55

将内容类型更改为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 calling response.getWriter or .getOutputStream more than once.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文