如何用JSP实现文件下载(在线等) 比如音乐网站的音乐文件下载. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.可以直接写个链接URL+文件目录+文件名2.也可以写个下载页面,代码如下response.setHeader("Content-disposition","attachment; filename=文件名");FileInputStream fis=new FileInputStream("文件路径+文件名");OutputStream os=response.getOutputStream();int byteRead;while(-1 != (byteRead = fis.read())){ os.write(byteRead);}os.close();if (fis != null) fis.close(); <%@ page contentType="text/html;charset=GB2312" %><HTML><BODY><P>点击超链接下载Zip文档book.Zip <BR> <A href="loadFile.jsp">下载book.zip</Body></HTML> loadFile.jsp:<%@ page contentType="text/html;charset=GB2312" %><%@ page import="java.io.*" %><HTML><BODY><% //获得响应客户的输出流: OutputStream o=response.getOutputStream(); //输出文件用的字节数组,每次发送500个字节到输出流: byte b[]=new byte[500]; //下载的文件: File fileLoad=new File("f:/2000","book.zip"); //客户使用保存文件的对话框: response.setHeader("Content-disposition","attachment;filename="+"book.zip"); //通知客户文件的MIME类型: response.setContentType("application/x-tar"); //通知客户文件的长度: long fileLength=fileLoad.length(); String length=String.valueOf(fileLength); response.setHeader("Content_Length",length); //读取文件book.zip,并发送给客户下载: FileInputStream in=new FileInputStream(fileLoad); int n=0; while((n=in.read(b))!=-1) { o.write(b,0,n); }%></BODY></HTML>.....这样可以么.... <% // 新建一个SmartUpload对象 SmartUpload su = new SmartUpload(); // 初始化 su.initialize(pageContext); // 设定contentDisposition为null以禁止浏览器自动打开文件,保证点击链接后是下载文件。 su.setContentDisposition(null); // 下载文件 su.downloadFile("./wafWeb/download/marc.iso"); %> 直接用组件是最方便的,用smart组件,你可以自己到网上下一个,有统一的接口,很好用! 呵呵,楼上面的说了很多办法了.如果直接用超连接的话,一定要保证文件所在的路径在web服务器的虚拟路径中.如果用jsp或者servlet打开文件,写到输入流中去的话,一定要正确的设置content-type.最后,不建议用smartupload,那是个烂东西. 急:struts2 遍历并判断 输出Struts2中ActionContext 中值到页面,怎么是空值? 如何将多个文本框的内容存入一个数组中去,文本框对应一个数组的元素,为空就不获取 hibernate映射关联? 关于struts的跳转 关于导入wrl模型的Applet如何在网页显示de问题 怎样下载文件而,不让文件内容在ie中直接显示 cookie问题 servlet在整个JSP中充当什么角色?服务器实行JSP是把JSP文件转化为servlet对吗? TOMCAT问题 java 的class 为什么不可以是protected访问权限? JSP超链接到本页的乱码问题
2.也可以写个下载页面,代码如下
response.setHeader("Content-disposition","attachment; filename=文件名");
FileInputStream fis=new FileInputStream("文件路径+文件名");
OutputStream os=response.getOutputStream();
int byteRead;
while(-1 != (byteRead = fis.read()))
{
os.write(byteRead);
}
os.close();
if (fis != null)
fis.close();
<HTML>
<BODY>
<P>点击超链接下载Zip文档book.Zip
<BR> <A href="loadFile.jsp">下载book.zip
</Body>
</HTML> loadFile.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page import="java.io.*" %>
<HTML>
<BODY>
<% //获得响应客户的输出流:
OutputStream o=response.getOutputStream();
//输出文件用的字节数组,每次发送500个字节到输出流:
byte b[]=new byte[500];
//下载的文件:
File fileLoad=new File("f:/2000","book.zip");
//客户使用保存文件的对话框:
response.setHeader("Content-disposition","attachment;filename="+"book.zip");
//通知客户文件的MIME类型:
response.setContentType("application/x-tar");
//通知客户文件的长度:
long fileLength=fileLoad.length();
String length=String.valueOf(fileLength);
response.setHeader("Content_Length",length);
//读取文件book.zip,并发送给客户下载:
FileInputStream in=new FileInputStream(fileLoad);
int n=0;
while((n=in.read(b))!=-1)
{ o.write(b,0,n);
}
%>
</BODY>
</HTML>.....这样可以么....
<% // 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,保证点击链接后是下载文件。
su.setContentDisposition(null);
// 下载文件
su.downloadFile("./wafWeb/download/marc.iso");
%>
如果直接用超连接的话,一定要保证文件所在的路径在web服务器的虚拟路径中.
如果用jsp或者servlet打开文件,写到输入流中去的话,一定要正确的设置content-type.
最后,不建议用smartupload,那是个烂东西.