admin 管理员组文章数量: 887043
2023年12月23日发(作者:sql server按时间范围查询语句)
Struts2下载文件实现的说明
contentType
内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片
inputName
下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法
contentDisposition
文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:
attachment;filename="",表示文件下载的时候保存的名字应为。如果直接写filename="",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline;filename=""
bufferSize
下载缓冲区的大小
contentType属性和contentDisposition分别对应着HTTP响应中的头Content-Type和Content-disposition头。
如下例:
配置:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"/dtds/">
application/octet-stream
inputStream
attachment;filename="${fileName}"
4096
文件下载Action:
public class FileDown extends ActionSupport {
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
me = fileName;
}
public InputStream getInputStream() throws UnsupportedEncodingException {
return vletContext().getResourceAsStream(
"/WEB-INF/" + fileName);
}
public String execute(){
n(fileName+"----------");
return "success";
}
}
这个例子运行可,可能会出现:下载页面的文件名为:或htm等情况。
这在实际保存时,要改成相应的文件名,在不知道原文件类型情况下就无法改了。
这种情况,可以这样解决:
将配置改为:
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"/dtds/">
application/octet-stream
inputStream
4096
文件下载action改为:
public class FileDown extends ActionSupport {
private String fileName;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
me = fileName;
}
public InputStream getInputStream(){
HttpServletResponse response = ponse();
der("Content-Disposition", "attachment;fileName="+
fileName);
return vletContext().getResourceAsStream(
"/WEB-INF/" + fileName);
}
public String execute(){
n(fileName+"----------");
return "success";
}
}
这样就行了。
如果下载文件名称是中文,会出现乱码现象,解决方案:
将上面action相应的改为如下两步
(1)设置:
public void setFileName(String fileName) throws UnsupportedEncodingException {
me = new String(es("ISO-8859-1"),"UTF-8");
}
(2)设置:
der("Content-Disposition", "attachment;fileName="
+ (fileName,"UTF-8"));
问题解决。
版权声明:本文标题:struts2.2.1文件下载及中文乱码问题解决 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703304748h446197.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论