`
jiangpan
  • 浏览: 53803 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

Struts2.0文件上传-文件尺寸问题

阅读更多
近日在工作中一直使用Struts2.0,对它的了解也是逐渐的增多哦,嗯嗯,好事一件.不过,在使用中也遇到了一些问题,一般的基本都搞定了,只有一个,到现在也没弄明白,实在不行,就得查看源代码了......

问题是这样的:

上传文件,需要限制上传文件的大小,这个可以在配置Action的interceptor来解决,只需设置一下maximumSize的值就可以了,我这里设置的是1048576(1M).

如果我现在上传一个大小为1.5M的文件,会报文件尺寸过大的错误,这个错误的显示信息可以通过在全局的国际资源文件中配置:struts.messages.error.file.too.large.这时没有什么问题.

但只时我上传一个大小为5M的文件,就会报一个

the request was rejected because its size (xxxxxx) exceeds the configured maximum (xxxxxx)的错误.而且我上传页面中原有的参数全部丢失.比如我修改一条记录时传到上传页面的ID值.(这里就是我没搞明白的地方,数据为什么会丢)
这里是因为Struts2.0默认的上传文件的大小是2M.如果上传超过这个大小的就会报错.可以通过在struts.xml中修改默认的上传文件大小:<constant name="struts.multipart.maxSize" value="5242880" />,我在这里设置成了5M,允许上传5M的文件.

如果用户上传的文件,超过了在Action中Iterceptor中的大小,而小于Struts.xml文件中设置的大小,一切正常;一旦上传的文件超过了Struts.xml文件中设置的大小,问题就出现了,虽然也能正常的返回上传页,但数据丢失......这个受不了啊

哪位高人也遇到过这种问题,并且解决了,不妨告诉小弟一下,^_^,小弟这里先谢谢了....

PS:暂时将Struts.xml中设置了1G,如果用户要上传再大的文件,那也没办法了,抓紧时间搞定它....唉.

Feedback
# re: Struts2.0文件上传-文件尺寸问题[未登录]  回复  更多评论   
2007-10-31 23:29 by jezz
我也遇到了,我做的批量上传,好象只能设置它总共上传的大小,不能设置每个上传的大小!而且很大也不报错,只在控制台报错!
# re: Struts2.0文件上传-文件尺寸问题  回复  更多评论   
2008-08-28 14:58 by 11
这个问题搞定了没?我也遇到了!
# re: Struts2.0文件上傳-文件尺寸問題  回复  更多评论   
2009-02-20 09:14 by 比爾
套件中struts2-core-2.0.11.jar/org.apache/struts2/default.properties:
...
#預設上傳檔案大小最大為2087152k,即2MB
struts.multipart.maxSize=2097152
...

以上預設值可在struts.xml覆寫掉:
ex:
<struts>
<constant name="struts.multipart.maxSize"
value="1048576000" />

<action name="xxx" class="xxxAction"
method="xxxMethod">
<result name="xxx">/jsp/XXX.jsp</result>
<result name="input">/jsp/OOO.jsp</result>

<interceptor-ref name="fileUpload">
<param name="maximumSize">5242880</param>
<param name="allowedTypes">
設mime-type</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</struts>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
其中<constant name="struts.multipart.maxSize"
value="1048576000" />設的是所有檔案的大小上限

而,
<action>
<interceptor-ref name="fileUpload">
<param name="maximumSize">5242880</param>
</interceptor-ref>
</action>
因為每個上傳檔案都會被攔截器攔截
,所以設的是單一檔案大小

當有exception時,如果action繼承至ActionSupport,
則會forward到input,所以要配置:
<result name="input">/jsp/OOO.jsp</result>

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

<struts>
<package name="res" namespace="/" extends="struts-default">
</struts>
則會繼承套件中struts2-core-2.0.11.jar
的struts-default.xml(裡面有一個package就是struts-default),
fileUpload就是其中的一個interceptor,被包覆在defaultStack
因為action有指定interceptor(為fileUpload),
所以並不會像預設就會有defaultStack的interceptor(只會有指定的intercpeptor)

為了讓該action可以有其預設的其它攔截器,所以要再加default的其它攔截器:
<interceptor-ref name="defaultStack"></interceptor-ref>
分享到:
评论

相关推荐

    struts-2.0.11.2-lib

    - `commons-fileupload.jar`:处理文件上传的组件。 - `commons-lang3.jar`:Apache Commons Lang,提供各种字符串和语言操作工具类。 - `commons-logging.jar`:日志服务抽象层,允许开发者选择不同的日志实现。...

    struts2.0(9-12)

    在这个"Struts2.0(9-12)"系列中,我们将重点讨论如何在Struts 2 中实现文件上传功能,这是一个常见的需求,特别是在处理用户提交的图片、文档等数据时。 文件上传在Struts 2 中主要依赖于Apache的Commons ...

    struts2.0中文教程

    01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解...09 在Struts 2中实现文件上传 10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX

    Struts2.0文件上传原理

    以下是对Struts2.0文件上传原理的详细解释: 1. **HTTP协议与表单提交** 在HTML表单中,如果需要上传文件,`&lt;form&gt;`标签必须包含`enctype="multipart/form-data"`属性。这是因为普通POST请求无法处理二进制数据,...

    Struts2.0文件上传实例

    Struts2.0文件上传是Java Web开发中的一个重要实践,它允许用户在Web应用程序中上传文件,例如图片、文档或音频文件。这个实例是针对初学者设计的,可以帮助理解并实现这一功能。以下是对Struts2.0文件上传机制及其...

    Struts 2.0系列(MAX)

    Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 ...在Struts 2中实现文件上传 在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 Struts 2与AJAX

    struts2.0 文件上传示例

    这个案例展示了Struts2.0文件上传的基本流程,包括Action类的编写、Struts配置、文件上传逻辑以及前端表单设计。通过这种方式,开发者可以灵活地控制文件上传的过程,确保安全性并提供友好的用户体验。同时,这个...

    Struts2.0 文件上传与下载全解析

    本篇文章将全面解析Struts2.0中的文件上传和下载流程。 ### 文件上传 文件上传的核心在于`multipart/form-data`编码类型,这是HTML表单用于上传文件的必需属性。在示例中,我们看到一个简单的Struts2表单,其中...

    手把手教你Struts2.0

    Struts2.0 是一个基于 Model-View-Controller (MVC) 设计模式的Java Web框架,它旨在简化Web应用的开发。Struts 2.0是在Struts 1.x的基础上进行了改进,以解决原有版本的一些局限性,如代码量过多、单元测试困难等...

    struts2.0(希望可以帮助大家)

    12. **实战例子**:可能包含一些实际项目中的应用场景,如用户登录注册、角色权限控制、文件上传下载等案例。 这些文档以连载形式呈现,适合逐步学习和实践。通过这些资料,读者不仅可以理解Struts2.0的基础概念,...

    struts2.0所有的JAR包

    - `commons-fileupload.jar`和`commons-io.jar`:提供文件上传功能。 3. **插件**:Struts2的可扩展性体现在其丰富的插件系统,如: - `struts2-convention-plugin.jar`:约定优于配置(Convention over ...

    Struts2.0 实现文件上传进度

    在Struts2.0框架中实现文件上传进度是一项常见的需求,尤其在用户上传大文件时,实时显示上传进度可以提供更好的用户体验。本文将详细介绍如何利用Struts2.0的监听器来实现这一功能。 首先,我们需要理解文件上传的...

    Struts2.0文件上传进度

    在Struts2.0框架中,文件上传是一个常见的功能,特别是在处理大文件或者需要用户反馈上传状态的应用场景中。为了提供更好的用户体验,我们通常会希望实现一个文件上传进度条,以便用户可以直观地看到文件上传的进度...

    struts2.0文件上传下载

    Struts2.0 文件上传下载是Java Web开发中常见的功能,它涉及到客户端与服务器的数据交互。Struts2作为一款强大的MVC框架,提供了方便的文件上传和下载支持。本篇文章将深入探讨Struts2实现文件上传下载的核心概念、...

    Struts_2.0从入门到精通

    文件上传是Web应用中的常见需求,Struts2.0提供了完善的文件上传解决方案。它利用MultipartResolver接口处理多部分请求,支持单文件和多文件上传。开发者只需简单配置,即可轻松实现文件上传功能。 十、Struts2.0中...

    初识[Struts2.0]并[使用Struts2.0]进行SSH集成

    5. **插件架构**:Struts2.0具有丰富的插件支持,如文件上传、日期时间选择等,这些插件可以轻松地扩展框架功能。 SSH集成步骤: 1. **Spring**:Spring提供依赖注入(DI)和面向切面编程(AOP),负责管理和协调...

    struts2漏洞s2-045,不升级jar版本的修补方法,已验证.docx

    该漏洞是由于 Struts2 中的 MultiPartRequestWrapper 类中的一个错误导致的,该错误可能会导致攻击者可以上传恶意文件,进而导致服务器崩溃或数据泄露。 修补方法 为了修复 S2-045 漏洞,我们可以采取以下步骤: 1...

    struts2.0上传文件源码

    这个“struts2.0上传文件源码”提供了一个完整的示例,展示了如何在Struts2.0环境中实现文件上传功能。在Web应用中,文件上传是常见的需求,例如用户可能需要上传头像、文档或者其他类型的数据。 在Struts2.0中,...

    struts2.0+Extjs文件上传例子

    功能强大的Struts2.0+Extjs实现的文件上传,包含文件上传进度,文件的下载,压缩,解压多文件删除等

Global site tag (gtag.js) - Google Analytics