public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
req.setCharacterEncoding("ISO8859-1");
res.setContentType("text/html;charset=utf-8");
// 服务器相对路径
String path = req.getParameter("address");
// 服务器绝对路径
path = getServletContext().getRealPath("/") + path;
// path=java.net.URLEncoder.encode(path,"utf-8");
path = new String(path.getBytes("ISO8859-1"), "utf-8");
System.out.println(path);
// 检查文件是否存在
File obj = new File(path);
System.out.println(obj.exists());
if (!obj.exists()) {
res.setContentType("text/html;charset=utf-8");
res.getWriter().print("指定文件不存在!");
return;
}
// 读取文件名:用于设置客户端保存时指定默认文件名
int index = path.lastIndexOf("\\"); // 前提:传入的path字符串以“\”表示目录分隔符
String fileName = path.substring(index + 1);
// 写流文件到前端浏览器
ServletOutputStream out = res.getOutputStream();
res.setHeader("Content-disposition", "attachment;filename=" + fileName);
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(path));
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
} catch (IOException e) {
throw e;
} finally {
if (bis != null)
bis.close();
if (bos != null)
bos.close();
}
}
serverlet实现文件下载
最新推荐文章于 2022-10-23 16:38:31 发布