站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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组件
好像只有上传功能啊


↑返回目录
前一篇: jsp页面上禁止点击右键问题。
后一篇: 我想把TOMCAT的端口号改成80 可是老出错!!!!