文件的下载有2种方式:
a)通过超链接直接下载
<a href="./uploadFiles/today.txt">today</a>
<a href="./uploadFiles/today.rar">today</a>
这种方式十分方便,但是如果浏览器可以识别该文件,例如txt,png,jpg等则会直接打开;若浏览器不识别文件格式,例如压缩包等,则会下载。
但是,这种方式会将服务器目录直接暴露给最终用户,给网站带来一些不安全因素。
地址中中文乱码问题需要解决???
b)通过servlet程序下载
前端代码通过超链接访问servlet:
<a href="./downloadTest/myDownload?filename=today.txt">
today.txt</a>
servlet代码:
//获得请求文件名
String filename = request.getParameter("filename");
System.out.println(filename);
//设置文件MIME类型 response.setContentType(getServletContext().getMimeType(filename));
//设置Content-Disposition
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//读取目标文件,通过response将目标文件写到客户端
//获取目标文件的绝对路径
String fullFileName = getServletContext().getRealPath("/uploadfiles/" + filename);
//读取文件
InputStream in = new FileInputStream(fullFileName);
OutputStream out = response.getOutputStream();
//写文件
int b;
while((b=in.read())!= -1)
{
out.write(b);
}
in.close();
out.close();