struts2下载文件
- 博客分类:
- java web
struts2下载文件
项目用到下载文件,以下是我写的下载文件的源代码,支持文件名称为中文
ACTION:
contentType有多个属性,比如text/plain是文本类型,具体大家可以查看相关文档,application/octet-stream;charset=ISO8859-1是所有的文件的类型,以流的方式读取。
ontentDisposition表示下载文件的处理方式,有inline(默认)和attachment两种。若指定为inline模式,浏览器会先尝试直接打开文件,无法直接打开则弹出保存对话框;attachment模式则直接弹出文件保存对话框。
inputName表示下载文件的来源流。若inputName取值为downloadFile,则在相应的action类中必须有一个返回类型为InputStream的getDownloadFile方法来返回下载的文件入口。
filename="${filenameInCN}",filename是下载文件的名称,可以随便制定。
读取项目中的源文件返回InputStream类型
ServletActionContext.getServletContext().getResourceAsStream("/upload/123.txt");
获取项目的根目录
String path = ServletActionContext.getServletContext().getRealPath("/");
另外参考http://aimilin6688.iteye.com/blog/1062730
项目用到下载文件,以下是我写的下载文件的源代码,支持文件名称为中文
ACTION:
package com.file.action; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import com.opensymphony.xwork2.ActionSupport; public class FileDownloadAction extends ActionSupport { private String fileName;// 要下载的文件名 public String execute() throws Exception { return SUCCESS; } // 下载文件 public InputStream getDownloadFile() { InputStream is = null; try { is = new FileInputStream("c:/download/" + fileName); } catch (FileNotFoundException e) { e.printStackTrace(); } return is; } public void setFileName(String fileName) { try {// 解决中文文件名问题 this.fileName = new String(fileName.getBytes("ISO-8859-1"), "GBK"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } public String getFileName() { String name = ""; try {// 解决下载文件中文文件名问题 name = new String(fileName.getBytes("GBK"), "ISO8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return name; } } 配置文件: [code="java] <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- 设置默认编码格式 --> <constant name="struts.i18n.encoding" value="GBK" /> <!-- 设置最大上传文件是300M --> <constant name="struts.multipart.maxSize" value="314572800" /> <!-- 设置默认的临时文件存储位置 --> <constant name="struts.multipart.saveDir" value="C:/fileUpload" /> <!-- 设置调试模式 --> <constant name="struts.devMode" value="true"></constant> <package name="fileupload" extends="struts-default" namespace="/file"> <!-- 文件上传 --> <action name="upload" class="com.file.action.FileUploadAction"> <result type="redirectAction"> <param name="actionName">list</param> <param name="namespace">/file</param> </result> </action> <!-- 下载文件 --> <action name="download" class="com.file.action.FileDownloadAction"> <result type="stream" name="success"> <param name="contentType">application/octet-stream</param> <!-- 要有相对应的getDownloadFile()方法返回值是 InputStream --> <param name="inputName">downloadFile</param> <param name="contentDisposition">attachment;filename="${fileName}"</param> <param name="bufferSize">4096</param> </result> </action> <!-- 文件下载列表 --> <action name="list" class="com.file.action.FileListAction"> <result>/file.jsp</result> </action> </package> </struts>
contentType有多个属性,比如text/plain是文本类型,具体大家可以查看相关文档,application/octet-stream;charset=ISO8859-1是所有的文件的类型,以流的方式读取。
ontentDisposition表示下载文件的处理方式,有inline(默认)和attachment两种。若指定为inline模式,浏览器会先尝试直接打开文件,无法直接打开则弹出保存对话框;attachment模式则直接弹出文件保存对话框。
inputName表示下载文件的来源流。若inputName取值为downloadFile,则在相应的action类中必须有一个返回类型为InputStream的getDownloadFile方法来返回下载的文件入口。
filename="${filenameInCN}",filename是下载文件的名称,可以随便制定。
读取项目中的源文件返回InputStream类型
ServletActionContext.getServletContext().getResourceAsStream("/upload/123.txt");
获取项目的根目录
String path = ServletActionContext.getServletContext().getRealPath("/");
另外参考http://aimilin6688.iteye.com/blog/1062730
发表评论
-
bak
2013-07-28 13:43 658bak the project -
Tomcat启动报错:IOException while loading persisted sessions: java.io.EOFException
2012-12-03 15:30 1228...... 严重: IOException while lo ... -
struts2下载文件功能(边下载边打包)
2012-11-29 09:24 1314转:http://cloudyxuq.iteye.com/bl ... -
java的web项目中使用cookie保存用户登陆信息
2012-11-27 14:36 17073最近在编写论坛系统的 ... -
ajax 文件下载
2012-11-27 14:20 937由于要使用ajax 下载,所以查询资料,备份如下 ajax l ... -
java-正则表达式判断手机号
2012-11-27 13:51 990要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有 ... -
js 日期 加几天
2012-11-27 10:01 2974简单的显示第几天: 返回格式化的日期,年份或日期不是2位则补 ... -
Window Location
2012-11-23 08:14 836"window.location.href" ... -
validationEngine
2012-11-22 13:42 762参考 http://blog.csdn.net/jielion ... -
Struts2 + jQuery 实现ajax
2012-11-22 12:33 8111、将struts2的json插件加入web工程的lib, j ... -
配置tomcat让shtml嵌套文件显示
2012-11-19 01:00 1722之前,我知道tomcat可以直接解析shtml文件,在浏览器中 ... -
session超时,处理ajax请求
2012-11-15 14:13 2618本文转自http://blog.csdn.net/zuxian ... -
ckeditor在struts2中的配置方法
2012-11-11 17:03 2615上篇转载的文章不适用与struts2,捣鼓了半天也没出来 后来 ... -
s:if判断
2012-11-10 20:32 685s:if一直出不来,原来是少加了个# 正确的写法 < ... -
CKEditor 3.x 在Java中配置、包括图片上传、支持FTP、图片压缩(转)
2012-11-09 13:36 5226备注:不支持附件,如 ... -
struts2+spring+hibernate环境
2012-07-03 15:18 788今日整理了一下struts2+spring+hibernate ...
相关推荐
struts2官方文档
使用struts2实现文件下载功能,可以直接运行!
Struts2下载文件时中文乱码和空格处理
在struts2基础上实现的包括单文件、多文件的上传及下载
struts2中的文件上传和下载: 1.首先导入commons-fileupload-1.2.1.jar和commons-io-1.4.jar两个jar包 2.其次JSP页面中的文件上传控件所在的form必须设置属性enctype="multipart/form-data" 3.再次,struts2中...
Struts2 下载文件不同浏览器兼容问题,实现不同浏览器下载文件名是action名的问题
struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接...
Struts2 Struts2 超好的Struts2 pdf 文档 Struts2 Struts2 超好的Struts2 pdf 文档 Struts2.pdf文档
网上很多有关struts2的api文档都是不全的。我经过精心整理出的struts2api文档,非常齐全。
在我们做struts2文件下载的时候,经常会遇到这种问题:点“打开/保存”一切正常,但当我们点击“取消”时,却报一堆的异常(其中包括ClientAbortException异常),非常让人头疼,如何彻底解决呢?附件中使用struts2-...
struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置...
struts2的根本webwork2
在struts官网下的struts2中没有帮助文档,几经周折找到的API文档,包括了struts中常用jar包(struts2-core,xwork-core等)!
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
Struts2的开发文档,学习Struts2时可以用来查阅API相关接口说明,便于分析框架原理
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单
Struts2 开发者文档 api
使用struts2框架进行文件的上传并限制文件的大小与类型,使用struts2框架实现文件下载
Struts2 api文档