我有一个Spring Boot服务,它需要验证不同rest路由中的多部分最大文件大小,例如所有v1路由的5MB和v2路由的10MB
e.g: api/v1/route1 -> max file upload size is 5MB
api/v2/route2 -> max file upload size is 10MB
api/v2/route3 -> max file upload size is 2MB
下面已经设置了,但所有请求都将根据它进行验证,包括v1路由
servlet:
multipart:
max-file-size: 10MB
max-request-size: 10MB
我在想实施它的最佳方式是什么。
>
它是否在应用程序级别将最大10MB限制保持为上述一般值,并且在每个路由中使用MultipartFile getSize()方法进行验证
还有其他更好的方法可以通过检查请求路径在拦截器或其他什么东西中实现吗?
我会说,这是基于整个项目是如何建立起来的。根据我的意见,两种选择都有利弊,
对我来说,选项1简单明了,将由servlet本身处理(尽管我们必须手动进行额外的保护)
但是,如果UI也不处理此保护,我将选择选项2。因为api/v2/route3总是有100%的机会接收10MB的数据。
如果我选择选项2,我需要在截取器中手动写入以处理此问题,还需要在获得新服务时处理多部分,如果您想要处理无限大小的文件,这种方法将有助于确定特定的服务。
如果我选择选项1,在这个选项中,我们将通过servlet进行两次检查,另一次将使用文件进行检查。size()假设您需要在另一个服务(大于10MB的文件)中处理50MB的数据,这意味着所有具有多部分的服务将允许高达50MB的数据通过控制器。但理想情况下,没有人会始终将10MB的文件传递给api/v2/route3(只允许2MB),因为它可以在UI中使用简单的javascript代码进行保护。
如果它在UI中不受保护,最好使用选项2,因为选项2将通过拦截器
分别验证每个服务
我正在用Spring Boot 2.1.3(使用标准的Tomcat嵌入式web服务器)开发一个endpoint来上载图像,我想限制多部分上载的大小。我可以通过以下属性轻松完成此操作: 但是我总是得到Spring无法捕获的500,因为Tomcat正在抛出异常并且请求无法到达我在RestController中的代码。 我的ExceptionHandler是这样的,但无论注释中出现什么异常,它显然都不起
我已将最大文件大小设置为 这是我的控制器: 这是一条错误消息 请求过大文件后的最终结果是加载页面问题。我没有得到任何其他错误的堆栈跟踪,所以我有点卡住了什么是实际发生的。哦,是的,我已经尝试了许多其他的解决方案,如注册过滤器,在错误控制器中处理异常。每次我都会以同样的结果服务器崩溃告终。 编辑2 我的异常处理类:
我试图用postman上传一首歌,但我有一个错误,比如field song超过了其最大允许大小1048576字节。“ 我已经尝试在application.properties文件中添加这些配置,但它不起作用: spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB 这是我的
您可以使用基于浏览器的上传(不是多部分上传)中的内容长度范围字段来限制文件大小:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html 你怎么能在多部分上传中限制它?我正在使用EvaporateJS。
问题内容: 甲文件是一个相当有据可查的格式定义部分和大小,因此,最大尺寸为好。 例如,一个文件包含一个幻数(4个字节),一个版本(4个字节),常量池(可变大小)等。但是大小可以在几个级别上定义:您可以有65535个方法,每个方法都限于65535字节。 其他限制是什么? 而且,如果您要制作最大的文件,它将是多少? 如果需要,将答案限制为Java。这意味着如果Scala或Clojure(或…)更改了一
A文件是一种有很好文档记录的格式,它定义了节和大小,因此也定义了最大大小。 例如,a文件包含一个幻数(4字节)、一个版本(4字节)、常量池(可变大小)等。但大小可以在多个级别上定义:可以有65535个方法,每个方法限制为65535字节。 其他限制是什么?如果你想做最大的文件可能是什么大小? 如果需要,限制对Java的回答。意思是如果Scala或Clojure(或…)改变一些限制,忽略这些值。