您的位置:首页 > 编程语言 > Java开发

struts2文件上传下载原理

2015-11-27 10:18 357 查看
文件上传:

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

下载缓冲区的大小
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: