关于jsp中的文件下载

简介: 第一种采用转发的方式: package cn.jbit.download.servlet; import java.io.IOException; import javax.

第一种采用转发的方式:

package cn.jbit.download.servlet;  
  
import java.io.IOException;  
  
import javax.servlet.RequestDispatcher;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
public class DownloadServlet extends HttpServlet {  
  
    private static final long serialVersionUID = 6765085208899952414L;  
  
    public void doGet(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        doPost(request, response);  
    }  
  
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        String filedownload = "/upload/1/10213.jpg";//即将下载的文件的相对路径  
        String filedisplay = "10213.jpg";//下载文件时显示的文件保存名称  
        response.setContentType("application/x-download");//设置为下载application/x-download  
        //response.setContentType("application/x-msdownload");//设置为下载application/x-msdownload  
        //response.setContentType("application/octet-stream");//设置为下载application/octet-stream  
        response.addHeader("Content-Disposition", "attachment;filename="  
                + filedisplay);  
          
        try {  
            RequestDispatcher rd = request.getRequestDispatcher(filedownload);  
            if(rd != null)  
            {  
                rd.forward(request,response);  
            }  
            response.flushBuffer();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}  

 

二:通过输出流的方式:

package cn.jbit.download.servlet;  
  
import java.io.BufferedInputStream;  
import java.io.BufferedOutputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
public class DownloadOfIOServlet extends HttpServlet {  
  public void doGet(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        doPost(request, response);  
    }  
      
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        String basePath = request.getSession().getServletContext().getRealPath("/upload");  
  
        String filedisplay = "helloworld.jpg";  
        String filedownload = basePath + File.separator + "helloworld.jpg";  
        response.setContentType("applicaiton/x-download");  
        response.addHeader("Content-Disposition", "attachment;filename="+filedisplay);  
          
        InputStream is = null;  
        OutputStream os = null;  
        BufferedInputStream bis = null;  
        BufferedOutputStream bos = null;  
          
        is = new FileInputStream(new File(filedownload));  
        bis = new BufferedInputStream(is);  
        os = response.getOutputStream();  
        bos = new BufferedOutputStream(os);  
          
        byte[] b = new byte[1024];  
        int len = 0;  
        while((len = bis.read(b)) != -1){  
            bos.write(b,0,len);  
        }  
          
        bis.close();  
        is.close();  
        bos.close();  
        os.close();  
    }  
}  

 

第三种:通过超链接的方式(注意不推荐,因为会暴露下载文件的位置)

目录
相关文章
|
1月前
|
Java
JSP实现文件上传——uploadFile.jsp
JSP实现文件上传——uploadFile.jsp
18 0
|
1月前
|
Java
jsp实现文件上传——douploadFile.jsp
jsp实现文件上传——douploadFile.jsp
13 0
|
Java
jsp小脚本
jsp小脚本
57 0
|
Java
jsp页面中文乱码问题解决
1.两次编码,一次解码。
59 0
|
Java
JSP 文件上传
JSP 文件上传
80 0
|
缓存 Java 应用服务中间件
JSP目录介绍如下
JSP目录介绍如下
95 0
jsp和servlet进行数据上传
这个流程步骤很重要!!!!记住他
JSP的文件上传处理
JSP的文件上传处理
132 0
JSP的文件上传处理
|
Java 应用服务中间件

热门文章

最新文章

相关课程

更多