当前页面: 开发资料首页 → JSP 专题 → Struts大虾帮帮忙,如何用struts实现下载功能?
Struts大虾帮帮忙,如何用struts实现下载功能?
摘要: Struts大虾帮帮忙,如何用struts实现下载功能?
我查了以前的帖子,可都没什么帮助。
我以前是用获得相对路径的方法:myweb/download/xx.xx来实现的,可这就要求把下载的文件都放在web目录下,不便于管理。
想要:myweb/download.do?id=xxx就实现下载
我用的jspsmart,每次下载提交到一个download.jsp里做:
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.net.URLEncoder"%>
<%@ page import="java.util.Random"%>
<%@ page import="com.jspsmart.upload.*" %>
<%@ page import="common.Tools"%>
<%@ page import="java.io.*"%>
<%
//request.setCharacterEncoding("GB2312");
//System.out.println( "contentLenth=="+(long)request.getContentLength());
SmartUpload su = new SmartUpload();
su.initialize(pageContext);
String contentLink = Tools.checkNull(request.getParameter("contentLink"));
//解决文件名中有空格的问题
contentLink = contentLink.replaceAll("255"," ");
java.io.File file = new java.io.File(contentLink);
if(file.isFile())
{
Random rd = new Random();
String desFileName = rd.nextInt(10000)+contentLink.substring(contentLink.lastIndexOf(".")-1);
//int index = contentLink.lastIndexOf('//');
//String desFileName = contentLink.substring(index);
su.setContentDisposition(null);
System.out.println("登陆主机为:"+request.getRemoteHost());
System.out.println("下载文件为:"+contentLink);
//su.downloadFile(contentLink);
su.downloadFile(contentLink,"attachment",desFileName);
}
else if(file.isDirectory())
{
String [] fileNames = file.list();
for(int i=0;i
{
String fileRealPath = file.getPath()+"//"+fileNames[i];
Random rd = new Random();
String desFileName = rd.nextInt()+fileRealPath.substring(fileRealPath.lastIndexOf(".")-1);
su.setContentDisposition(null);
System.out.println(fileRealPath);
//su.downloadFile(contentLink);
su.downloadFile(fileRealPath,"attachment",desFileName);
}
}
%>
每次下载操作form.action=/jsp/download.jsp?contentLink=XXX就可以了
jspsmart比较简单,运行起来也比较稳定,不过有一些小bug,比如不支持小于3k的文件下载,可以改改源代码,不难的。
推荐使用工具 同一楼上
建议用commons-fileupload-1.0.jar组件
可是commons-fileupload-1.0.jar组件
好像只有上传功能啊