struts2 动态文件下载 大家帮帮忙啊,做了很久了!
struts2 文件下载 问题我写了个文件下载,我想用<s:iterator>标签遍历一个文件夹下的文件,
每个文件后有个下载链接,点击“下载”,就可以下载到硬盘上了,struts.xml,
Filedownload.java ,都写好了,就是jsp不知怎么写,主要是标签不会用,
而且也不知道这下载的路径怎么定的,如果大家有空就帮我看看,谢谢!
还要解决中文问题
为了把悬赏分增加,我又重新发表了一个,请会的人帮帮我,非常感谢!我已经做了好长时间了
请帮我思考思考,如果悬赏分不够,我的可以全给你
struts.xml
程序代码:
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.i18n.encoding" value="GBK"/>
<package name="default" namespace="/" extends="struts-default">
<action name="filedownload" class="com.heqing.action.Filedownload">
<!--<interceptors>
<interceptor name="downloadinterceptor"
class="com.dingxun.download.DownloadInterceptor">
</interceptor>
<interceptor-stack name="myinterceptor">
<interceptor-ref name="downloadinterceptor" />
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
-->
<param name="fileName"></param> <!-- 设置文件名参数,由页面上传入 -->
<result name="success" type="stream">
<param name="contentType">application/octet-stream</param> <!-- 下载文件类型定义 -->
<param name="contentDisposition"> <!-- 下载文件处理方法 -->
attachment;filename="${downloadChineseFileName}"
</param>
<param name="inputName">downloadFile</param> <!-- 下载文件输出流定义 -->
</result>
</action>
</package>
</struts>
Filedownload.java
程序代码:
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Filedownload extends ActionSupport {
// 下载文件原始存放路径
private final static String DOWNLOADFILEPATH = "/";
// 文件名参数变量
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
// 从下载文件原始存放路径读取得到文件输出流
public InputStream getDownloadFile() {
return ServletActionContext.getServletContext().getResourceAsStream(DOWNLOADFILEPATH + fileName);
}
// 如果下载文件名为中文,进行字符编码转换
public String getDownloadChineseFileName() {
String downloadChineseFileName = fileName;
try {
downloadChineseFileName = new String(downloadChineseFileName
.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downloadChineseFileName;
}
public String execute() {
return SUCCESS;
}
}
[ 本帖最后由 heqingkelly 于 2010-10-8 21:01 编辑 ]
搜索更多相关主题的帖子:
动态 文件
----------------解决方案--------------------------------------------------------
感谢啊,
帮忙啊,诚心请教!
----------------解决方案--------------------------------------------------------
怎么没人解答一下啊?
----------------解决方案--------------------------------------------------------
大家不要看到长代码就走了啊
不会,可以再问问你们认识的人啊
多谢你们的帮助
现在学习也没老师问,只能来论坛,QQ群问了
我弄了几天了,网上也搜过了
我确实不会了
----------------解决方案--------------------------------------------------------
是用struts2写的,我也写过一个简单点的,
jsp页面上就写了一个<a href="down.action">下载</a>
发送action到配置文件,具体下载过程是在Action里实现的,如下:
程序代码:
package tarena.actions;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.struts2.ServletActionContext;
public class DownLoadAction {
private InputStream downStream;
private String fname;
public InputStream getDownStream() {
return downStream;
}
public void setDownStream(InputStream downStream) {
this.downStream = downStream;
}
public String getFname() {
try {
// 为了防止另存为对话框出现中文乱码
return new String(fname.getBytes("GBK"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return fname;
}
}
public void setFname(String fname) {
this.fname = fname;
}
public String execute() {
// 可以根据请求提交过来的资源ID号,获取资源名称
fname = "sql语句.txt";
String path = ServletActionContext.getServletContext().getRealPath(
"upload");
String destFile = path + "/" + "sql.txt";
try {
downStream = new FileInputStream(destFile);
return "down";
} catch (FileNotFoundException e) {
e.printStackTrace();
return "fail";
}
}
}
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.apache.struts2.ServletActionContext;
public class DownLoadAction {
private InputStream downStream;
private String fname;
public InputStream getDownStream() {
return downStream;
}
public void setDownStream(InputStream downStream) {
this.downStream = downStream;
}
public String getFname() {
try {
// 为了防止另存为对话框出现中文乱码
return new String(fname.getBytes("GBK"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
return fname;
}
}
public void setFname(String fname) {
this.fname = fname;
}
public String execute() {
// 可以根据请求提交过来的资源ID号,获取资源名称
fname = "sql语句.txt";
String path = ServletActionContext.getServletContext().getRealPath(
"upload");
String destFile = path + "/" + "sql.txt";
try {
downStream = new FileInputStream(destFile);
return "down";
} catch (FileNotFoundException e) {
e.printStackTrace();
return "fail";
}
}
}
----------------解决方案--------------------------------------------------------
虽然不是按我的要求,还是固定的文件下载啊,我要的是遍历一个文件夹下的所有文件,提供下载啊
后台催我结账了,还是结账吧
。。。。。。。。。。。。
----------------解决方案--------------------------------------------------------
还没满意答案就催我结账,诶。。。。。。。。。。。。。。。。。
----------------解决方案--------------------------------------------------------
不好意思哦,能力有限。。。
----------------解决方案--------------------------------------------------------
没关系,都几天了,就你一人回复,这论坛太冷清了,
非常谢谢你,有人回复就很高兴了,
----------------解决方案--------------------------------------------------------