网页上文件下载功能的实现

前面有介绍过文件传输的实现,今天来教教大家如何实现网页上的文件下载功能~

仅谈文件传输的话,这与javaSE中学的IO流如出一辙,换汤不换药罢了.


以下为本次小课题的代码实现:

import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //通过路径得到一个输入流
        String path = this.getServletContext().getRealPath("/WEB-INF/classes/sourse/photo.jpg");
        FileInputStream fis = new FileInputStream(path);
        
        //创建字节输出流
        ServletOutputStream sos = response.getOutputStream();
		
		
        //执行输出操作
        int len = 1;
        byte[] b = new byte[1024];
        while((len = fis.read(b)) != -1) {
            sos.write(b, 0, len);
        }
        
        /*方法内可以不关流*/
        sos.close();
        fis.close();
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

以上代码实现的仅仅是B/S模式的文件传输功能,效果图如下:



要想实现图片的下载功能少不了以下几段代码:

		//得到要下载的文件名
		String filename = path.substring(path.lastIndexOf("\\")+1);   // "\\" == "/" 第一个"\"用于转意
 		
		//设置文件名的编码
		filename = URLEncoder.encode(filename, "UTF-8");
		
		//告知客户端要下载的文件
		response.setHeader("content-disposition", "attachment;filename=" + filename);
		response.setHeader("content-type", "image/jpeg");   //jpeg的简写为jpg   Content-type:下载文件类型
		


代码全了,这下看看效果如何~

网页刚一打开,文件下载的小窗就自动弹出来了.

有木有心动呢,心动不如行动,赶快上手试试吧~



查看相关git代码请移步:https://github.com/striner/javaCode/blob/master/fileDownloadOnline

喜欢就请关注我,你们的关注是我最大的动力~




猜你喜欢

转载自blog.csdn.net/striner/article/details/78827743