package com.zl.loadtest;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 模拟浏览器下载文件
*
* @author 丢了风筝的线
*
* @see 2020年1月8日
*/
@WebServlet("/load")
public class LoadTest extends HttpServlet {
protected void service(HttpServletRequest rq, HttpServletResponse rp) throws ServletException, IOException {
// 设置编码格式
rq.setCharacterEncoding("utf-8");
rp.setContentType("text/html;charset=utf-8");
// 获取页面传递过来的文件名
String path = rq.getParameter("url");
System.out.println(path);
// 获取请求的文件的绝对路径
String realPath = rq.getRealPath(path);
// 1、当服务器收到页面请求下载的请求后,将下载的内容加载到服务器主机的内存中
System.out.println(realPath);
// 此文件必须放在web的WebContent目录下
FileInputStream fis = new FileInputStream(realPath);
// 2、在响应头中告诉浏览器响应的是一个文件
rp.setHeader("content-disposition", "attachment;filename=" + path);
// 3、将文件内容输出
OutputStream os = rp.getOutputStream();
byte[] flush = new byte[1024];
int len;
while ((len = fis.read(flush)) != -1) {
os.write(flush, 0, len);
}
// 释放资源
fis.close();
os.close();
}
}
java实现浏览器从服务器的文件下载
最新推荐文章于 2023-09-22 09:34:39 发布