JSP实现文件下载

原创 2007年09月29日 11:29:00

看起来是一个非常简单的功能,也许有人会说直接把文件路径贴到超链结里面就可以下载了呀,也或者有人会说用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;

Java Web中使用JSPSmartUpload控件实现文件的上传和下载(解决了中文乱码问题)(JSP页面采用GBK编码)

折腾了我两天的使用JSPSmartUpload控件进行文件的上传和下载问题终于被解决了,现在将要注意的几个点整理出来,方便自己以后查询的同时分享给大家(内容有参考网上其他博客),希望以后文件的上传和下...

使用JSP+Servlet实现文件上传下载

文件的上传下载是在web应用中常用的功能之一,这篇博客就简单的使用纯Jsp+Sevlet完成文件上传下载的功能。平时在做一些数据提交的时候通常使用表单,在form表单有一个属性enctype,该属性规...

简单介绍用JSP来实现文件下载功能的几种方式

1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。 2.在服务器端把文件...

JSP/servlet实现文件上传下载和删除

由于存储空间,对一般用户而言,就是用来操作存储文件的,所以这两天,特意看了一下windows下用servlet实现文件上传、下载和删除,下面是详细代码说明上传:用的是commons-fileuploa...
  • aidayei
  • aidayei
  • 2011年05月26日 22:58
  • 7980

Jsp+Servlet实现文件上传下载

使用Servlet获取上传文件的输入流然后再解析里面的请求参数。 一、 Jsp页面post方式提交,enctype为”multipart/form-data”。 ...

JSP实现文件下载及中文乱码解决方案

在用JSP实现下载文件功能时,如果文件名或文件内容有中文,总是会出现乱码问题。在网上搜索参考了不少帖子,结合自己开发的经验,在这里做一下总结。 1、JSP代码    Log log = LogF...

用CSV框架导出csv文件实现下载(jsp)

Java Web中使用JSPSmartUpload控件实现文件的上传和下载(解决了中文乱码问题)(JSP页面采用GBK编码)

折腾了我两天的使用JSPSmartUpload控件进行文件的上传和下载问题终于被解决了,现在将要注意的几个点整理出来,方便自己以后查询的同时分享给大家(内容有参考网上其他博客),希望以后文件的上传和下...

Jsp+Servlet实现文件上传下载——前台页面开发

JSP和Servlet都是J2EE的规范,JSP全名为Java Server Pages,中文名叫java服务器页面,它是在传统的网页HTML文件中插入Java程序段(Scriptlet)和JSP标记...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP实现文件下载
举报原因:
原因补充:

(最多只允许输入30个字)