使用response下载文件
首先使用context.getRealPath
获取当前web应用下目标文件在tomcat服务器中的真实路径。
然后通过targetString.substring(targetString.lastIndexOf("\\") +1)
来获取目标文件的文件名。
然后通过响应头设置resp.setHeader("Content-disposition","attachment;filename=" + filename)
来指定当前响应格式为附件下载。(如果文件名为中文则需要对文件名进行额外的编码转换)
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String realPath = context.getRealPath("/下载测试.jpg");
String filename = realPath.substring(realPath.lastIndexOf("\\")+1);
// 在使用中文文件名时需要使用URLEncoder.encode(varName, encodeType)进行编码准换
// resp.setHeader("Content-disposition","attachment;filename=" + filename)
resp.setHeader("Content-disposition","attachment;filename="
+ URLEncoder.encode(filename, "utf-8"));
FileInputStream in = new FileInputStream(realPath);
int len = 0;
byte[] buffer = new byte[1024];
ServletOutputStream out = resp.getOutputStream();
while((len=in.read(buffer))!=-1) {
out.write(buffer, 0, buffer.length);
}
in.close();
out.close();
}