Struts2下载文件实现的说明 struts2文件上传下载


 Struts2下载文件实现的说明

  contentType

  内容类型,和互联网MIME标准中的规定类型一致,例如text/plain代表纯文本,text/xml表示XML,image/gif代表GIF图片,image/jpeg代表JPG图片

  inputName

  下载文件的来源流,对应着action类中某个类型为Inputstream的属性名,例如取值为inputStream的属性需要编写getInputStream()方法

  contentDisposition

  文件下载的处理方式,包括内联(inline)和附件(attachment)两种方式,而附件方式会弹出文件保存对话框,否则浏览器会尝试直接显示文件。取值为:

  attachment;filename="struts2.txt",表示文件下载的时候保存的名字应为struts2.txt。如果直接写filename="struts2.txt",那么默认情况是代表inline,浏览器会尝试自动打开它,等价于这样的写法:inline;filename="struts2.txt"

  bufferSize

  下载缓冲区的大小

1 使用Struts2控制文件下载
可能很多人会觉得,文件下载太简单,直接在页面上给出一个超级链接,该链接的href属性等于要下载文件的文件名,不就可以实现文件下载了吗?大部分时候的确可以实现文件下载,但如果该文件的文件名为中文文件名,则会导致下载失败;或者应用程序需要在让用户下载之前进行进一步检查,比如判断用户是否有足够权限来下载该文件等。
看下面的一个原始的下载页面代码片段:
<h1>原始的下载</h1>
<ul><li>
<!-- 包含中文文件名的下载链接-->
下载Struts2的Logo:<ahref="images/中.gif">下载图形文件</a>
</li><li>
下载Struts2的Logo的压缩文件:<ahref="images/struts-gif.zip">下载压缩文件</a>
</li></ul>
上面页面的包含两个下载的超级链接,两个链接的资源都是存在的,但因为第一个资源文件的文件名是中文文件名,如果单击第一个超级链接,将出现如下图所示的页面。
从图中页面中椭圆形框包围的地方,我们看到被下载的文件名变成了包含大量%的字符串,很明显,这种文件名显然无法取得需要下载的文件

2。使用action下载

action页面代码:

package download;
import java.io.*;

importorg.apache.struts2.ServletActionContext;

importcom.opensymphony.xwork2.ActionSupport;
public class DownLoad extendsActionSupport {

privateStringinputPath;
privateStringcontentType;
private Stringfilename;
public StringgetContentType() {
returncontentType;
}
public voidsetContentType(String contentType) {
this.contentType= contentType;
}
public StringgetFilename() {
returnfilename;
}
public voidsetFilename(String filename) {
this.filename= filename;
}
public StringgetInputPath() {
returninputPath;
}
public voidsetInputPath(String inputPath) {
this.inputPath= inputPath;
}
public InputStreamgetInputStream() throws Exception
{
returnServletActionContext.getServletContext().getResourceAsStream(inputPath);
}
@Override
public Stringexecute() throws Exception {
inputPath="/UploadImages/che.jpg";//要下载的文件名称
filename="test.jpg";//保存文件时的名称
contentType="/gif";//保存文件的类型
return SUCCESS;

}

Struts.xml

<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE strutsPUBLIC
"-//Apache Software Foundation//DTD Struts Configuration2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default">
<action name="filedownload">
<result name="success"type="stream">
<paramname="contentType">${contentType}</param>
<paramname="inputName">inputStream</param>
<paramname="bufferSize">4096</param>
<paramname="contentDisposition">filename="${filename}"</param>
<paramname=""></param>
</result>
</action>
</package>
</struts>

jsp.页面

<%@ pagecontentType="text/html;charset=gb2312"%>
Struts2下载文件实现的说明 struts2文件上传下载
<%@ taglib prefix="s"uri="/struts-tags"%>
<html>
<head>
<title>下载</title>
</head>
<body>
<ahref='<s:urlvalue="filedownload.action"/>'>下载</a>
</body>
</html>

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/132310.html

更多阅读

91手机助手安装软件失败的原因 91助手上传视频失败

91手机助手安装软件失败的原因——简介很多朋友的苹果手机已经越狱了,但是91手机助手安装东西总是失败, 安装任何东西都提示安装失败, 到底是什么原因呢?下面小编为你解答几个原因,希望可以帮助到你。91手机助手安装软件失败的原因—

FTP文件上传-grails shell ftp 上传文件

[java]import java.io.IOException;import org.apache.commons.net.ftp.FTPimport org.apache.commons.net.ftp.FTPClientimportorg.apache.commons.net.ftp.FTPClientConfigimport org.apache.commons.net.ftp.FTPFileimport o

FTP上传速度很慢,有没有解决的办法 ftp上传软件

使用webftp上传压缩文件大家在往自己的FTP服务器里上传文件的时候,常常使用一些FTP客户端软件,例如CuteFTP或者flashFTP,他们都受到你的网络连接速度的限制,如果你的服务器在国外,很有可能上传一个BBS原程序会浪费你一天时间,其实它们也不

声明:《Struts2下载文件实现的说明 struts2文件上传下载》为网友思念生了病分享!如侵犯到您的合法权益请联系我们删除