`
micheal19840929
  • 浏览: 161970 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

实现jsp点击txt链接强制下载

    博客分类:
  • J2EE
阅读更多

web开发时有时候会遇到,点击一个txt的文本,需要出现下载的提示然后自动下载到本地,Excel也是,但是往往txt还是xls,因为ie能直接打开的,不能实现我们想要的效果。这个时候需要用到强制下载。网上搜索了一下找到jsp的相关代码

Java代码

 

<% 
 String filename = request.getParameter("filename");//"1a.txt"; 
 String filepath = request.getParameter("filepath");//"d:\\";
  int i = 0;
 response.setContentType("application/octet-stream");
 response.setHeader("Content-Disposition","attachment;filename = "+filename); 
 java.io.FileInputStream fileInputStream = new java.io.FileInputStream(filepath+filename);
 while((i= fileInputStream.read()) != -1){
  out.write(i);
 }
%>


这是被调用的download1.jsp,这个jsp就是执行直接下载文件的不管是txt还是word文档都可以直接下载

另外我以前用过的一个asp版本的强制下载,也是同样的原理

asp代码如下:

' 强制下载
filename="20081001.xls"
response.contenttype="aaa/bbb"
response.addheader "Content-Disposition","inline; filename="&filename

javascript版本的

function svcode(obj) {
var winname = window.open('', '_blank', 'height=1,width=1,top=200,left=300');
winname.document.open('text/html', 'replace');
winname.document.writeln(obj.value);
winname.document.execCommand('saveas','','code.txt');
winname.close();
}

缺陷是只有保存

无论jsp还是asp,要直接下载一个文件,我们需要做两件事,第一件事是:设定响应的内容类为“application/octet-stream”,大小写无关。第二件事是:设置HTTP的响应头名字为:Content-Disposition,设定值为:attachment; filename = theFileName。这里的theFileName就是出现在文件下载对话框里的默认文件名,通常和所下载的文件名字相同,但也可以不同。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics