文档章节

Struts2文件上传

SPPan
 SPPan
发布于 2017/06/02 10:30
字数 574
阅读 4
收藏 0

struts2的文件上传主要依赖的是org.apache.struts2.interceptor.FileUploadInterceptor这个拦截器,关于这个拦截器我不想做过多的研究,这里主要讨论的是该拦截器里面定义的几个关于文件上传的重要属性。

以下的属性主要配置在struts.xml中对应文件上传Action的拦截器中。

protected Long maximumSize;   //允许上传单个文件的大小单位为字节
protected String allowedTypes; //允许上传的文件类型详见tomcat中web.xml文件
protected Set allowedTypesSet; //允许上传的文件类型Set集合详见tomcat中web.xml文件。allowedTypes与allowedTypesSet属性如有多个值之间用逗号隔开

示列:

<action name="Upload" class="UploadAction">
    <result name="success">success.jsp</result>
    <result name="input">upload.jsp</result>
    <interceptor-ref name="fileUpload">
        
        <param name="maximumSize">102400</param>
        
        <param name="allowedTypesSet">application/msword</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"/>
</action>

**注意:**要使用文件上传功能我们必须显实的在对应文件上传的Action中指定这个拦截器及在该拦截器中配置我们需要的参数,最后别忘了附加上这个默认的拦截器,这样才能真正发挥struts2的文件上传功能。

Action中的示列代码:

publicclass FileUploadAction extends ActionSupport {
    private File file;
    private String fileContentType;
    private String fileFileName;
    private String memo;
    @Override
    public String execute() throws Exception {
        String path=ServletActionContext.getRequest().getRealPath("/upload");
        if(file==null) {
            this.addFieldError("file", "文件不能为空,请选择");
            return INPUT;
        }else{
            InputStream is=new FileInputStream(this.getFile());
            OutputStream os=new FileOutputStream(new File(path,this.getFileFileName()));
            byte[] buf=newbyte[1024];
            int length=0;
            while((length=is.read(buf))>0)
            {
                os.write(buf, 0, length);
            }
            is.close();
            os.close();
        }
        return SUCCESS;
    }
    public File getFile() {
        return file;
    }
    public void setFile(File file) {
        this.file = file;
    }
    public String getFileContentType() {
        return fileContentType;
    }
    public String getFileFileName() {
        return fileFileName;
    }
    public String getMemo() {
        return memo;
    }
    public void setFileContentType(String fileContentType) {
        this.fileContentType = fileContentType;
    }
    public void setFileFileName(String fileFileName) {
        this.fileFileName = fileFileName;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
}

jsp中的示列代码:

<s:form action="Upload" enctype="multipart/form-data" method="post">
    <s:file name="file"></s:file>
    <s:textfield name="memo"></s:textfield>
    <s:submit></s:submit>
</s:form>

struts.xml中的示列代码:

<action name="Upload" class="UploadAction">
    <result name="success">/success.jsp</result>
    <result name="input">/upload.jsp</result>
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">102400</param>
        <param name="allowedTypes">application/msword</param>
   </ interceptor-ref>
    <interceptor-ref name="defaultStack"/>
</action>

说明

  1. 设置文件上传属性在Action中对应的类型的java.io.File;

  2. 设置文件上传表单的enctype="multipart/form-data" method="post"

private File **file**;

private String **file**ContentType;

private String **file**FileName;
  1. 粗体部分与文件上传表单中文件上传属性的name一致。

  2. 其余部分的为固定写法。

© 著作权归作者所有

共有 人打赏支持
SPPan
粉丝 10
博文 29
码字总数 15103
作品 0
成都
程序员
私信 提问

暂无文章

源码分析 Mybatis 的 foreach 为什么会出现性能问题

背景 最近在做一个类似于综合报表之类的东西,需要查询所有的记录(数据库记录有限制),大概有1W条记录,该报表需要三个表的数据,也就是根据这 1W 个 ID 去执行查询三次数据库,其中,有一...

TSMYK
20分钟前
0
0
IC-CAD Methodology企业实战之openlava

在云计算解决安全问题并成为IC界主流运算平台之前,私有的服务器集群系统仍然是各大IC公司的计算资源平台首选。 现在主流的服务器集群管理系统包括lsf,openlava,SkyForm,三者都属于lsf一系...

李艳青1987
35分钟前
2
0
http response stream 字节流 接收与解码

在接收图片、音频、视频的时候,需要用到二进制流。 浏览器会发给客户端 字节Byte流,一串串的发过来_int8格式 -128~127(十进制),也就是8bit(位)。 客户端接收的时候,对接收到的字节收集,...

大灰狼wow
35分钟前
2
0
配置Tomcat监听80端口...

12月13日任务 16.4 配置Tomcat监听80端口 16.5/16.6/16.7 配置Tomcat虚拟主机 16.8 Tomcat日志 1.配置Tomcat监听80端口 示例一:自定义监听端口 vim /usr/local/tomcat/conf/server.xml 编辑...

hhpuppy
35分钟前
3
0
在ubuntu中配置java环境

先在官网下载一个jdk 进入root权限,避免之后出现创建文件失败或者修改文本失败的问题 sudo i 创建一个文件夹来放置jdk解压后的文件 mkdir 文件夹mv jdk1.9(你下载的jdk文件) 你创建 的文...

无极之岚
36分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部