struts2文件上传下载原理

文件上传:

Struts2在进行文件上传操作时,实际上是通过两个步骤实现的:
1) 首先将客户端上传的文件保存到struts.multipart.saveDir键所指定的目录中,如果该键所对应的目录不存在,那么就保存到javax.servlet.context.tempdir环境变量所指定的目录中。
2) Action中所定义的File类型的成员变量file实际上指向的是临时目录中的临时文件,然后在服务器端通过IO的方式将临时文件写入到指定的服务器端目录中。

struts.multipart.saveDir是在哪里指定的呢?在org.apache.struts2的default.properties中进行指定的,如下:

struts.multipart.saveDir=
struts.multipart.maxSize=

用struts2进行文件的上传如下:

public class UploadAction extends ActionSupport
{
private String username;

private File file;//当流程转到Action里了,那么file就已经指向真正的文件了.

private String fileFileName;

private String fileContentType;//注意最后两个的成员变量的命名是有规则的.
}
文件上传也是通过interceptor来进行拦截的,fileupload这个拦截器.并且已经加入到默认的拦截器栈里面去了.通过这个拦截器可以设定一些参数.如上传的最大字节数等,但不起作用,用default.properties里面的类似配置进行配置.
struts2的常量配置.的配置.如:,跟struts.properties里面的配置谁的优先级高呢?是struts.properties高.但是实际开发中要么在struts.properties配,要么在struts.xml中进行配,本身是同一回事来的.

文件下载:

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

下载缓冲区的大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值