Struts2配置如下:
<action name="download" class="sgProcessListAction"> <result name="success" type="stream"> <param name="contentType">application/octet-stream;charset=ISO8859-1</param> <param name="inputName">inputStream</param> <param name="contentDisposition">attachment;filename=${downloadFileName}</param> <param name="bufferSize">4096</param> </result> </action>
配置参数说明:
contentType
内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表 GIF图片,image/jpeg代表JPG图片,如果文件类型未知的话就使用application/octet-stream
inputName
下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream 的属性需要编写getInputStream()方法
contentDisposition
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:
attachment; filename=${downloadFileName},表示文件下载的时候保存的名字应为动态获取的文件名称 。如果直接写filename=${downloadFileName} ,那么默认情况是代表inline ,浏览器会尝试自动打开它,等价于这样的写法:inline; filename=${downloadFileName}
bufferSize
下载缓冲区的大小
SgProcessListAction代码如下:
public class SgProcessListAction extends ActionSupport {
private SgProcessListService sgProcessListService;
private SgProcessList sgProcessList;
private List<SgProcessList> sgProcessLists;
private String fileName;// 初始的通过param指定的文件名属性
public void setFileName(String fileName) {
this.fileName = fileName;
}
/** 提供转换编码后的供下载用的文件名 */
public String getDownloadFileName() {
String downFileName = fileName;
try {
downFileName = new String(downFileName.getBytes(), "ISO8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return downFileName;
}
public SgProcessListService getSgProcessListService() {
return sgProcessListService;
}
public void setSgProcessListService(SgProcessListService sgProcessListService) {
this.sgProcessListService = sgProcessListService;
}
public SgProcessList getSgProcessList() {
return sgProcessList;
}
public void setSgProcessList(SgProcessList sgProcessList) {
this.sgProcessList = sgProcessList;
}
public List<SgProcessList> getSgProcessLists() {
return sgProcessLists;
}
public void setSgProcessLists(List<SgProcessList> sgProcessLists) {
this.sgProcessLists = sgProcessLists;
}
public String list() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
public InputStream getInputStream() throws Exception {
// TODO Auto-generated method stub
HttpServletRequest request=ServletActionContext.getRequest();
int id=Integer.valueOf(request.getParameter("id"));
this.sgProcessList=this.sgProcessListService.findByID(id);
String targetDirectory = request.getRealPath("/sgfiles/");
if(sgProcessList.getPType()==0)//责任认定
{
targetDirectory+="\\rd\\"+sgProcessList.getPUrl();
}
if(sgProcessList.getPType()==1)//结案报告
{
targetDirectory+="\\ja\\"+sgProcessList.getPUrl();
}
this.fileName=sgProcessList.getPname();
return new FileInputStream(targetDirectory);
}
public String add() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
public String del() throws Exception {
// TODO Auto-generated method stub
HttpServletRequest req=ServletActionContext.getRequest();
HttpServletResponse response=ServletActionContext.getResponse();
response.setContentType("text/html; charset=UTF-8");
Integer id=Integer.valueOf(req.getParameter("id").toString());
this.sgProcessList=this.sgProcessListService.findByID(id);
try
{
this.DeleteFile(sgProcessList.getPType(),sgProcessList.getPUrl());
this.sgProcessListService.deleteSgProcessList(id);
response.getWriter().println("1");
response.getWriter().close();
}
catch(Exception e){
response.getWriter().println("0");
response.getWriter().close();
}
return null;
}
private Boolean DeleteFile(int _type,String _name)
{
HttpServletRequest request = ServletActionContext.getRequest();
String targetDirectory = request.getRealPath("/sgfiles/");
if(_type==0)
{
targetDirectory+="\\rd\\"+_name;
}
else
{
targetDirectory+="\\ja\\"+_name;
}
File f=new File(targetDirectory);
if(f.exists())
{
f.delete();
return true;
}
else
{
return false;
}
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return SUCCESS;
}
}
分享到:
相关推荐
使用struts2实现文件下载功能,可以直接运行!
struts实现的文件上传下载功能,最大可以上传到150MB
该文档总结了struts2框架技术实现下载功能的全部过程,是我在做开发时总结出来的,现在分享给大家。
struts1和struts2分别实现文件上传下载功能
网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...
基于Struts2的文件上传下载功能的完整源代码。经过测试可正确运行。
Struts2实现文件上传的功能,简洁方便,欢迎下载。
一个利用Struts2实现文件的上传下载,使用的是同步方式。没有用ajax请求
struts2 实现多文件上传功能,是一个很好的学习参考资料
2. 系统要实现如下的基本管理功能: (1)用户分为两类:系统管理员,一般用户。 (2)提供用户注册和用户登录验证功能;其中登录用户的信息有:登录用户名,登录密码等。 (3)管理员可以实现对注册用户的管理...
自己做的一个struts2 实现文件批量上传功能,
struts文件的上传下载功能实现,并利用过滤器解决了相应的中文乱码问题
程序进过本人亲测,附件中含SQL,用的是MySQL数据库,实现了带进度条的多文件上传,并提供下载功能,解压后可直接导入Eclipse,希望对你有所帮助。
Struts2框架实现文件上传功能
用struts2实现用户的注册,涉及到的知识点包括用户名和密码的校验(正则表达式验证);国际化;radio,checkboxlist,optiontransferselect等标签的使用,文件的上传等。
Struts2中实现文件上传功能Word2007
这是一个供初学者学习参考的简单的工程文件。用 Struts2.1+Hibernate3.1.3 框架实现登录功能。 压缩包内包含了数据库和数据表的样式(以图片的形式表示) 如果觉得这个工程还不错,就点个收藏,写个评论吧。 ^_^
Struts2最新版本2.2.1中所设计的核心库文件,包括以下内容: struts2-core-2.2.1.jar:Struts2框架的核心类库。 xwork-core-2.2.1.jar:Xwork核心类库,Struts2在其上构建。 ognl-3.0.jar:对象图导航语言(Object ...
这个是我自己用的代码和jar包,我在自己的机子实现了注册用户名是否已存在的功能。主要注意点都在文档里了。
用struts2实现文件上传功能代码,这是技术培训老师讲的源代码。