2013-04-04 67 views
1

我使用play 2.1.0并希望实现带有几个参数的文件上传,即multipart/form-data表单有一些小字段和文件本身。当isMaxSizeExceeded时访问请求主体

如果我上传的文件,而无需使用注释

@BodyParser.Of(value = BodyParser.MultipartFormData.class, maxLength = MAX_FILE_SIZE_B)

,并检查文件的大小像uploadedFile.length > MAX_SIZE我可以访问请求主体和它的所有不为空的时间。

如果我使用注释,当maxSizeExceeded ctx.request().body().asMultipartFormData()为null时,即使我的小参数在浏览器发送的请求中首先出现。这是正确的行为,是任何方式来获取小参数,即使文件太大?

确实,第一种方法很糟糕,因为大型文件实际上会上传到服务器上?

+0

行为是预期的,因为一旦有效载荷大小超过max_size限制,有效载荷就会被丢弃。所以,你不能访问任何表单域。请尝试将这些字段添加为请求标头的一部分,如果有帮助的话。对不起,迟到的回应,迟到比从未更好:)。 – Sundar 2013-04-23 09:28:08

+0

@Sundar你可以请创建一个答案,我会接受它。还链接到源将非常感激。 – 2013-04-23 15:29:45

回答

1

行为是预期的,因为标题将包含文件大小,并且如果有效负载/文件大小超过了max_size限制,服务器将不会收到该文件并且连接将被关闭。所以,你不能访问任何表单域。请尝试将这些字段添加为请求标头的一部分,如果有帮助的话。

没有文件解释这一点,但它是如何在http层中处理的。下面的code可能会解释一下,当有效负载超过它包装body = null的对象的限制时。

要回答你的问题,是的第二种方法是好的,并帮助你的服务器不必要地接受大文件。

+0

谢谢!很好的答案。 – 2013-04-26 18:48:36

相关问题