当前位置: 首页 > 面试题库 >

在不上传整个文件的情况下限制Struts2文件的最大上传大小

苗康平
2023-03-14
问题内容

我正在尝试在JSP / Struts2中实现文件上传,但我注意到了一个奇怪的行为。我在struts.xml中以这种方式声明了将文件大小限制为1MB的操作

<action name="massInsert" class="massInsertAction">
    <interceptor-ref name="fileUpload">
        <param name="allowedTypes">
             image/png,image/gif,image/jpeg
        </param>
        <param name="maximumSize">1000000</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack"/>

    <result name="success">/WEB-INF/jsp/massInsert/massInsert.jsp</result>
    <result name="validationError">/WEB-INF/jsp/massInsert/massInsert.jsp</result>
</action>

它工作得很好,非图像文件和1MB以上的图像都会引发错误。唯一的问题是,太大的文件在删除之前还是已完全上传到服务器的temp文件夹中。

有没有办法在达到限制后立即停止上传?

编辑: 四元数的解决方案有效,当请求超过了下一行所设置的最大值时,将引发错误并且一切都停止。没有文件写入磁盘

<constant name="struts.multipart.maxSize" value="1000000" />

问题答案:

有两个文件大小参数,一个与单个文件大小有关,另一个与最大多部分文件大小有关。之所以如此,是因为您可以根据需要接收文件数组(只需将设置器类型从File更改为File
[],就这么简单),例如 struts.multipart.maxSize 设置为10MB且文件大小( maximumSize )被设置到1
MB,您应该可以接收10个1MB的文件。因此,应允许缓冲区增长到10 MB。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    <constant name="struts.multipart.maxSize" value="1000000" />

    <action name="doUpload" class="com.example.UploadAction">
    <interceptor-ref name="basicStack"/>
    <interceptor-ref name="fileUpload">
        <param name="maximumSize">500000</param>
    </interceptor-ref> 
    <interceptor-ref name="validation"/>
    <interceptor-ref name="workflow"/>

    <result name="success">good_result.jsp</result>
    </action>
</struts>

来源:https :
//cwiki.apache.org/confluence/display/WW/File+Upload#FileUpload-
FileSizeLimits



 类似资料:
  • 问题内容: 我在Django应用中有一个表单,用户可以在其中上传文件。 如何设置上传文件大小的限制,以便如果用户上传的文件大于我的限制,则该表格将无效并且会引发错误? 问题答案: 此代码可能会帮助:

  • 问题 如何限定上传文件的大小? Solution web.py 使用cgi 模块来解析用户的输入, 而 cgi 模块对最大输入大小有限制。 下面的代码限制了最大数据输入为 10MB. import cgi # Maximum input we will accept when REQUEST_METHOD is POST # 0 ==> unlimited input cgi.maxlen =

  • 这是我的代码。我无法上传任何大小超过1 mb的文件,但我已将maxFileSize设置为50mb,请帮助,我做错了什么? 这是我的代码。我无法上传任何大小超过1 mb的文件,但我已将maxFileSize设置为50mb,请帮助,我做错了什么?

  • 问题内容: 我只想限制用户可以上传的文件的大小。 我以为maxlength = 20000 = 20k,但这似乎根本不起作用。 我在Rails上运行,而不是在PHP上运行,但是我认为在HTML / CSS客户端进行此操作要简单得多,或者使用jQuery作为最后的手段。这是如此基本,尽管必须缺少一些我不知道或不知道的HTML标记。 希望支持IE7 +,Chrome,FF3.6 +。我想我可以在需要时

  • 问题内容: 我有一个无法访问的PC上托管的网站。我有一个上传表单,允许人们上传最大30MB的mp3文件。我的服务器端脚本是用PHP完成的。 每次尝试上传文件时,都会收到一条错误消息,声称文件超出了允许的最大大小,因此我需要增加大小。我在网络上的研究建议更改我无权访问的文件,这样将无法正常工作。其他人建议我将自定义文件添加到我的根目录中,该文件无效。还有其他建议吗? 问题答案: 您需要设置的值,并在

  • 本文向大家介绍javascript实现限制上传文件大小,包括了javascript实现限制上传文件大小的使用技巧和注意事项,需要的朋友参考一下 前言:   项目中经常用到需要上传文件、照片等功能,同时需要限制所上传文件的大小。很多插件都会采用后台请求验证,前端Js校验比较少。本篇介绍一个前端JS便捷判断上传文件大小的方法。 这个是比较好的 下面的代码不建议使用   代码很简单,关键就是怎么用JS拿