JSP实现文件下载
来源:互联网 发布:张天一 知乎 编辑:程序博客网 时间:2024/04/28 22:47
看起来是一个非常简单的功能,也许有人会说直接把文件路径贴到超链结里面就可以下载了呀,也或者有人会说用jspsmartupload组件,两三行代码就可以搞定了。是的。多曾经也这样认为 。但事实是这么表面化么?不是
最近两天因为项目里面有这个功能要求,以前碰到这种需求都是拷贝同事们的现成代码,你传给我,我传给你的。但真正实现方式研究得很少,或者说根本就没思考过怎么实现将文件从服务器上下载到浏览器上。这次我将以前的代码拷过来却发生了错误:一是文件下载不了,弹出下载框提示文件名乱码,文件类型未知,下载时会出现地址找不到的情况。二是根本出不来下载框,页面报错response.getOutPutStream()已经被调用。第一种错误是用FileInputStream时出现的。第二种错误是用jspsmartupload时出现的。而如果直接粘贴地址到超链结里面,页面会在被加载时将地址前面加ftp:////地址出错。另外,在JSP中得到当前绝对路径的方式是request.getSession().getServletContext().getRealPath("")
下面将正确下载的代码贴出来。供大家参考。
String name = request.getParameter("name");
name=Commonsub.toUtf8String(name);
response.setContentType("application/octet-stream");
response.setHeader("Location",name);
response.setHeader("Cache-Control", "max-age=100");
//filename应该是编码后的(utf-8)
response.setHeader("Content-Disposition", "attachment; filename=" + name);
File file=new File(request.getSession().getServletContext().getRealPath("")+"/output",Commonsub.ex_chinese(name));
response.setContentLength((int)file.length());
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(file);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;
- JSP实现文件下载
- jsp实现文件下载
- JSP实现文件下载
- jsp实现文件下载
- Jsp 实现文件下载
- JSP实现文件下载
- jsp实现下载文件
- jsp实现文件下载
- 使用JSP实现文件下载
- 用jsp实现文件下载
- JSP实现文件下载代码
- Jsp中实现文件下载
- 用JSP实现文件下载
- jsp中实现文件下载
- jsp实现文件下载方式
- jsp实现文件下载的方法
- Jsp中实现文件上传与下载
- [转贴]jsp下载文件的实现方法
- 读--龙应台:在“仰德大道”上
- 技术的滥用
- (转)JAVA常见异常
- 根据IP获取当地天气预报的实现
- 内存碎片处理技术
- JSP实现文件下载
- 解决sql server2005 复制数据库向导 "库没有注册"问题
- 5条JAVA基础 --周剑雄老师
- ORACLE函数大全
- 如何寻找幸福婚姻:婚姻是爱情的组合,而不是改变命运的工具。
- ./configure
- 一位前辈工程师职业发展的忠告
- 如何把木马注册为系统服务
- C#利用Web Service实现短信发送