【问题标题】:How to limit multipart file upload size at jboss level?如何在 jboss 级别限制多部分文件上传大小?
【发布时间】:2015-08-03 08:42:06
【问题描述】:

我的应用程序在 jboss AS7+RestEasy 上运行,目前我正在处理我的 APi 中的文件大小限制

@POST
@GZIP
@RequestFilter
@Produces("application/json")
@Consumes("multipart/form-data")
@Path("/demo/test")
public String uploadTest(
        @MultipartForm UPFile uploadFileFile,
        ) {
if (uploadFileFile.getFileSize() > 10*10*1024) {
//error.. 
}
}

我将 fileSize 设为 @FormParm,这对我有用。

问题是文件上传到jboss容器后调用uploadTest()这个api,然后检查文件大小这会占用不必要的服务器资源(假设客户端上传1GB数据,这些数据将上传到服务器)我正在寻找对于一旦文件超过 10MB 就会拒绝文件的东西。

【问题讨论】:

    标签: file-upload jboss7.x resteasy


    【解决方案1】:

    您可以在Web子系统的相关连接器中设置max-post-size属性。

    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" max-post-size="10485760"/>
    

    【讨论】:

      【解决方案2】:

      将此添加到您的 web.xml 可以帮助您。

       <multipart-config>  
                <max-file-size>5120000</max-file-size>  
                <max-request-size>5120000</max-request-size>  
              </multipart-config> 
      

      【讨论】:

      • 感谢 vineet 的快速响应,但 或 @MultipartConfig 注释仅适用于我们使用 rest api (restEasy) 的 servlet,我尝试将上面添加到 RestEasyorg.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher1 但没有帮助。
      • John,你可以使用 [link]docs.jboss.org/resteasy/docs/1.1.GA/userguide/html/… 并将逻辑放入拦截器中。
      • 在 JAX-RS 2.0 中,您可以使用通过 @NameBinding 注释绑定到上传方法的 ContainerRequestFilter。在此过滤器中,您将查看 content-length 请求标头并在内容长度超过您计划接受的最大值时丢弃请求 (requestContext.abortWith(...))
      • 请注意,Content-Length 标头是由客户端编写的,因此如果您的客户端没有撒谎,这将起作用。
      猜你喜欢
      • 2018-02-15
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-05
      • 2012-04-26
      • 1970-01-01
      • 2019-12-17
      相关资源
      最近更新 更多