使用resteasy处理多部分/表单数据请求时,如何控制最大文件大小和/或最大请求大小?
我的代码如下所示:
@POST
@Path("/somerestresource")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response handleForm(@MultipartForm MyForm form) {
...
}
通过Servlet,我可以使用MultipartConfig注释控制内容。
所以我在考虑绕过resteish并使用@Context
注入HttpServletRequest
并在web.xml中配置我的servlet,但我不确定副作用。
除了Xavier的答案之外,您还可以从注入的上下文HttpServletRequest中获取内容长度标题。此外,这还不够,因为标题可能不可用(例如,当对帖子正文使用分块时)。然后,您有两种选择:让调用失败,因为您不知道流的长度,或者使用,例如,BoundedInputStream
读取请求上传部分的主体。
次要细节:content-long
标头通常与主请求一起发送,而不是与多部分数据的每个部分一起发送。因此,它不能准确表示上传的大小。
在JAX-RS 2.0中,您可以使用ContainerRequestFilter,并使用NameBinding注释将其绑定到上载方法。在此筛选器中,您将查看内容长度请求标头,如果内容长度超过您计划接受的最大值(requestContext.abortWith(…),则放弃该请求
)
使用JAX-RS 1.1和RESTEasy,您可能可以使用PreProcessInterceptor(http://docs.jboss.org/resteasy/docs/1.1.GA/userguide/html/Interceptors.html#PreProcessInterceptors)做同样的事情,并遵循类似于上述逻辑的逻辑。
我必须使用REST API将文件和信息上传到服务器。该API使用多部分形式,但我似乎无法正确使用它。 null 我尝试了几种方法,比如下面的代码,但是我不断从服务器得到错误的请求。
问题内容: 我正在尝试使用伪装完成多部分文件上传,但似乎在任何地方都找不到很好的示例。我本质上希望HTTP请求类似于以下内容: 甚至… 我是否需要手动构建请求主体,包括生成多部分边界?考虑到此客户端可以执行的其他所有操作,这似乎有点过头了。 问题答案: 不,你没有。您只需要定义一种代理接口方法,将content-type指定为:multipart / form- data和其他信息,例如远程API
我正在尝试使用curl向REST服务发布一个xml文件(utf-16编码)。REST服务需要“multipart/form-data”内容类型。 Curl脚本:Curl-k-i-h“content-type=multipart/form-data”-f“filename=@file.xml;type=text/xml”-x POST-u: 然而,我在运行脚本时得到500个内部服务器错误。 响应:<
我试图使用feign完成一个多部分文件上传,但是我似乎在任何地方都找不到一个好的例子。我基本上希望HTTP请求的结果类似如下: 或者甚至… 我需要手动构建请求体吗,包括生成多部分边界?考虑到这个客户端可以做的所有其他事情,这似乎有点过分。
问题内容: 我想在JavaScript中使用XMLHttpRequest来发布包含文件类型输入元素的表单,以便避免页面刷新并返回有用的XML。 我可以使用JavaScript将表单上的目标属性设置为MSIE的iframe或Mozilla的对象,而无需刷新页面即可提交表单,但这有两个问题。较小的问题是目标与W3C不兼容(这就是为什么我在JavaScript中而不是在XHTML中设置目标)。主要问题是
我正在使用PyCharm社区版2016,我注意到我无法打开大型数据输入文件或日志(20MB)。编辑简单地说“文件XXX太大(大小)”。 不仅如此,似乎没有办法改变限制。官方文档提到了一种增加使用intellisense的最大大小的方法,但根本没有增加可以打开的文件的最大大小。这是真的吗?这真的是一个完全无法打开大型日志的IDE吗?