WebWork之--使用fileUpload interceptor实现文件上传[基本配置+注意事项]

使用webwork的fileUpload interceptor,可以很方便的实现文件上传功能。以下为我在编写文件上传功能实现中的一些总结:
一:基本配置
开发环境:
服务器:tomcat 5.X
webwork版本:webwork 2.2.2
另外,需要把 apache下的commons FileUpload包放到你的classpath中,我的是直接放置在${app}/WEB-INF/lib目录下
1:webwork.properties配置

 

  1. webwork.multipart.parser=jakarta#文件解析器类型,备选项包括pell、cos、jakarta
  2. webwork.multipart.saveDir=someDir #临时文件保存路径,最好设置否则会在服务器运行日志中看到很多INFO提醒
  3. webwork.multipart.maxSize=61000#上传文件的大小上限,单位:byte
2:xwork.xml
<action name="upload" class="uploadAction">
        <result name="success">ok.jsp</result>
        <result name="error">err.jsp</result>
        <interceptor-ref name="fileUpload">
        <param name="maximumSize">512000</param>
        <param  name="allowedTypes">image/pjpeg,image/gif,image/bmp,image/jpeg</param>
        </interceptor-ref>
</action>
 

3:upload.jsp

  1. <formname="postForm"method="post"enctype="multipart/form-data"action="upload.action">
  2. <inputtype="file"name="doc"/>
  3. </form>

4:uploadAction.java



public class Upload Action extends ActionSupport {
        private Filedoc;//上传保存的临时文件的引用,命名和upload.jsp中doc保持一致
        private StringdocContentType;//文件类型,该字段命名=文件引用名+"ContentType"
        private StringdocFileName;//文件名,文件名=文件引用名+FileName
        public String execute() {
                if (doc==null) {//当取道的文件引用为null时,表示文件不符合你设定的条件
                                returnERROR;
                }
                //以下为服务器文件传存、重命名等操作,临时文件不用管,fileUploadinterceptor会自己处理善后工作。。。
        }
        //setters方法省略
}

 

 

 

 

二:上传代码流程说明及注意事项

1)程序走到fileUploadinterceptor之前已经对文件在服务器端进行了保存
2)fileUploadinterceptor必须在paramsinterceptor之前被调用,否则Action无法获取到文件的引用
3)如果能在客户端进行文件名后缀和大小的判断,需要尽量做完善。尽管大小判断的js在ie下才起作用,并且js可以被轻松绕过,也需要这样做,因为http文件传输是很消耗服务器CPU的
4)当文件大小和类型不符合fileUploadinterceptor设置时,action仍旧会执行,此时得到的文件引用为null
5)可以通过getFieldErrors()方法获取fileUpload对于文件拦截操作出来结果,虽然提示信息不是很明确,而且是英文,但至少可以从中分析出是什么原因造成的不能上传

三:参考

WebWork2文档中文化计划 http://wiki.javascud.org/display/ww2cndoc/File+Upload+Interceptor

apache commons FileUpload组件网址 http://commons.apache.org/fileupload/

webwork fileUpload intercrptor英文介绍 http://docs.huihoo.com/webwork/2.2.6/File%20Upload%20Interceptor.html

 

Struts2文件上传(二) 深入FileUploadInterceptor NULL 博文链接:https://zhanghong.iteye.com/blog/453826 立即下载

相关推荐

Spring Boot FileUpLoad and Interceptor文件上传和拦截器,Web入门知识)

创建Spring Boot项目时默认创建static目录,静态资源存放在此。如果是前后端分离的项目,这里为空。如果默认的静态资源过滤策略不能满足开发需求,也可以自定义静态资源过滤策略。在application.properties中直接定义过滤规则和静态资源位置:(classpath表示编译后的类路径,在target包下的class文件夹下的static,static也可以个更换)

Venus_yang的博客 1455

FileUploadInterceptor拦截器的笔记

当请求表单中包含一个文件file,FileUploadInterception拦截器会自动应用于这个文件。 表单: <s:form namespace="/xxx" action="yyy" method="post" enctype="multipart/form-data">   <s:file name="file" label="YourFile">&...

weixin_34400525的博客 361

Struts2拦截器之FileUploadInterceptor

一、它能做什么? 借助于这个拦截器我们可以实现文件的上传和下载功能。 理论部分: struts2的文件上传下载功能也要依赖于Apache commons-fileupload和Apache commons-io两个开源项目,要使用上传功能就需要把它们引入到classpath中。 比如考虑上传文件,几个关键点就是可以传什么类型的文件?可以传多大的文件?传过来以后放哪儿?叫什么...

weixin_30598225的博客 999

struts2 18拦截器详解(十一) --- FileUploadInterceptor

FileUploadInterceptor    该拦截器处于defaultStack第十的位置,看其名称就知道是用于处理文件上传的,对于文件上传有一点大家应该要了解:struts2处理文件上传内部使用的是commons-fileupload组件,当我们在form表单中把enctype属性设置为"multipart/form-data"时表示这是一个文件上传请求,当struts2接收到这

云原生之家 4107

webwork文件上传

step1: 页面定义如下 ......................... 省略 step2 action 如下 public class UploadAction extends ActionSupport { ..............................

inprise_lyj 126

FileUploadInterceptor

package com.mtf.vega.interceptor; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commo...

花花的技术博客 372

struts2-上传文件(1)

上传文件是很多Web程序都具有的功能。Struts2本身没有提供解析上传文件内容的功能,它使用第三方的文件上传组件提供对文件上传的支持。所以我们要想利用Struts2实现文件上传的功能,首先要将commons-fileupload-1.2.1.jar和commons-io-1.4.jar复制到项目的WEB-INF/lib目录下。我们知道,Struts1.x的上传组件需要一个ActionForm

lenotang的专栏 2819

文件上传进行更多的控制

<br />FileUploadInterceptor拦截器可以配置两个参数,用于对文件上传进行控制。这两个参数如下所示:maximumSize:通知拦截器Action可接受的文件的最大程度(以字节为单位),默认值为2MBallowedTypes:以逗号分隔的内容类型的列表(例如:text/html),符合列表中的类型的文件,可以被传给Action。如果没有指定的这个参数,那么就是允许上传任何类型。<br />当上传的文件不满足你所需指定的限制条件时,FileUploadInterceptor拦截器可以向A

游戏全栈,技术合作 689

Struts2学习笔记(十六) 文件上传(File Upload)

使用jsp/Servlet实现文件上传 在我们的web应用中,文件上传是一项非常常见的功能。以前我学习php的时候也用php写过文件上传,不过php中实现起来比较方便,只需要从全局变量$_FILES中获取到上传文件的临时存放路径等信息,再把它拷贝到目标地址并重命名就可以了。在Java中要实现文件上传要稍微复杂一点。我们需要通过request的getInputStream方法来获取到相关的输入流,...

maozhuxigood 213

文件上传了解struts2拦截器的使用

struts2中,拦截器是非常核心的内容,框架默认提供的拦截器,我们可以从struts2-core-**.jar/struts-default.xml中查询到,我们以struts2-core-2.3.15.3.jar为例,打开struts-default.xml,可以看到如下的默认拦截器:<interceptor name="alias" class="com.opensymphony.xwork2

Minhellic的博客 1418

Apache Struts2文件上传漏洞来袭,网御星云提供优选解决方案,从零基础到精通,收藏这篇就够了!

2024年12月,网御星云监测到Apache官方发布漏洞风险通告,在远程服务器代码中使用FileUploadInterceptor作为文件上传组件时,Apache Struts在文件上传逻辑中存在漏洞。3)添加“L3_Apache Struts2文件上传漏洞”,条件日志名称等于或包含“L2_Apache Struts2文件上传漏洞”,攻击结果等于“攻击成功”,目的地址引用资产漏洞或源地址匹配威胁情报,从而提升关联规则的置信度。(1)“网御漏洞扫描系统V6.0”产品已支持对该漏洞进行扫描。

Javachichi的博客 1336

Struts2文件上传 深入FileUploadInterceptor

文件上传是许多项目都遇到的需求,Struts2中也带有文件上传功能,但它是利用的java领域的其他俩个常用的文件上传的项目:Common-FileUpload和COS,在了解Struts2之前让我们了解下怎样使用Common-FileUpload实现文件上传以及文件上传实现过程中应该注意的问题。       在Common-FileUpload中,它把从客户端提交过来的表单封装成一个个Fi

壹龙的专栏 955

webwork中上传文件需要注意的地方

使用webwork框架的时候,使用apache自带的文件上传功能,那么需要注意的几个地方:1.因为webwork自带的上传的jar包,所以需要使http请求走webwork的拦截器interceptor,那么具体配置是在xwork.xml中配置拦截器interceptor:<interceptors><interceptors><interc...

weixin_34309435的博客 163

webwork文件上传实现

 [简单介绍]webwork 文件上传采用拦截器的方式,叫fileUpload 可供选择的上传组件有pell(2.1.7默认)jakata(2.2及以后默认),cos[例子][注意事项]1、cos和pell文件上传解析器不在被积极维护,会被很快移除.我们强烈建议你使用Jakarta的文件上传解析器,也就是缺省的解析器2、处理multipartRequest pell支持中文

疯猫 4425

深入分析javawebwork中的文件上传机制

深入分析javawebwork中的文件上传机制   点击上传按钮后,webwork的程序流如下:  step 1)进入ServletDispatcher.service public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException { ........  

溺水的鱼 - Later equals never. 975
上一篇: Tomcat常用
下一篇: WebWork之--在JSP中访问valueStack值栈内容[不使用WebWork OGNL标签]
yyw_hh
博客等级 码龄14年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值