使用JSP实现文件下载

在test.jsp相同的目录下又个文件夹cert,cert文件夹下有个123.dat的文件

就是点击test.jsp中显示的"文件下载"连接,把123.dat文件下载到客户端.

test.jsp文件的内容是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<a href="download.jsp?filename=123.dat">文件下载</a>
</BODY>
</HTML>

下面是download.jsp文件的内容:

<%
// example:
//  <a href="download.jsp?filename=test.gif">下载文件</a>
//文件都是放在cert文件夹下的 这个可以自己改,也可以动态的在test.jsp中指定.这里就不详细说明了
String root = getServletContext().getRealPath("/");

root = root + "cert/";
String fname = request.getParameter("filename");

response.setContentType("unknown");
response.setHeader("Content-Disposition","attachment; filename=/"" + fname + "/"");


try
{
java.io.OutputStream os = response.getOutputStream();
java.io.FileInputStream fis = new java.io.FileInputStream(root + fname);

byte[] b = new byte[1024];
int i = 0;

while ( (i = fis.read(b)) > 0 )
{
os.write(b, 0, i);
}

fis.close();
os.flush();
os.close();
}
catch ( Exception e )
{
}
%>

这样就可以做到网上的那种点击一个连接,就可以用默认的下载软件下载文件的要求了.

经过测试,这个方法存在着一个缺陷,就是当同一个页面有两个下载连接的时候,就要调用两次download.jsp,

而这时第一个下载连接是正常的,可以正常下载,但是第二个下载连接就会出错,错误提示会说getOutputStream这个函数已经调用过了,不能重复调用了。

也就是说这个方法只是在一个页面只有一个下载连接的情况下试用,当同时有几个下载连接,也就是要多次

调用download.jsp时,就不行了。

 我在网上查了查,结果一个网友说可以用servlet实现这个功能,就是多个下载连接同时下载的功能,现在还

在研究中……,有会的朋友请给我发个信息,留个言谢谢! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值