Web框架——Struts2高级文件上传.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
当我们做文件上传的时候其实有挺多需要注意的地方,比如说文件上传的格式, 大部分的时候有些文件我们是不允许用户上传的,比例.exe文件(可能有病毒)等。因此可以在Action中增加如下代码来实现文件的过滤: public String execute() throws Exception{ ?? //将允许上传文件类型的字符串以英文逗号(,)分解生字符串数组 ?? String filterResult = this.filterDocType(this.getAllowType().split(,)); ?? //判断是否可以上传 ?? if(null != filterResult){ ??? //不允许上传 ??? ActionContext.getContext().put(typeError, 你要上传的文件类型不正确!); ??? return filterResult; ?? } ?? ?? //以服务器的文件保存地址和原文件名建立上传文件输出流 ?? FileOutputStream fos = new FileOutputStream(getSavePath() + / + getUploadFileName()); ?? //以上传文件建立一个文件上传输入流 ?? FileInputStream fis = new FileInputStream(getUpload()); ?? //将上传的内容写入服务器 ?? byte[] buffer = new byte[1024]; ?? int len = 0; ?? while((len = fis.read(buffer)) 0){ ??? fos.write(buffer , 0 , len); ?? } ?? return this.SUCCESS; ?? } /** * 过滤文件 * * @param 系统允许上传的所有文件类型 * @return 如果文件类型允许上传返回null,否则返回input字符串 */ public String filterDocType(String[] types){ ?? //取得上传文件的文件类型 ?? String fileType = this.getUploadContentType(); ?? //遍历 ?? for(String type : types){ ??? if(type.equals(fileType)){ ???? return null; ??? } ?? } ?? return this.INPUT; } private String allowType; public String getAllowType() { ?? return allowType; } public void setAllowType(String allowType) { ?? this.allowType = allowType; } 其中的allowType是我在struts.xml文件中配置的参数,Struts.xml文件中的内容如下: action name=upload class=com.annlee.upload.UploadAction ??????? param name=savePath//param ??????? param name=allowTypeimage/bmp,image/gif,image/jpg/param ??????????? result/common/succ.jsp/result ??????????? result name=input/cos_fileupload/fileupload.jsp/result ??????? /action 在上传页面中添加以下一句,输出错误提示信息:${requestScope.typeError } 实现文件大小的过滤,与实现文件类型的过滤方法基本相同,File属性有一个length()方法,该方法返回文件的大小。 Struts2本身提供了一个文件上传的拦截器,通过配置该拦截器可以更轻松地实现文件过滤。我们只需要在Action中配置该拦截器就可以了。当文件过滤失败后,会自动转向input逻辑视图,因此必须为该Action配置名为input的逻辑视图,除此之外还必须为配置defaultStack的拦截器的引用。配置文件如下: action name=upload class=com.annlee.upload.UploadAction ??????? !-- 配置fileUpload的拦截器 -- ??????? interceptor-ref name=fileUpload ??????? ?? !-- 配置允

文档评论(0)

df829393 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档