【发布时间】:2021-09-08 13:01:25
【问题描述】:
我有一个部署在 Apache Tomcat 9 Webserver 中的 Spring MVC 应用程序。是否可以在用户上传文件时计算校验和?如果我想这样做,我什至应该从哪里开始寻找?
具体来说,我知道我可以在 Spring MVC 的 @Controller 类中计算校验和。但是,此时文件已完全上传到临时文件上传目录。具体来说,我在询问是否有一种方法可以在上传/创建 MultipartFile 对象时计算各个部分的校验和。我是否必须覆盖 Apache Tomcat 行为?是否可以在不修改 Tomcat 源代码的情况下做到这一点?如果不是,这样修改Tomcat源代码的潜在影响是什么?
我不了解网络服务器的复杂性,如果有人能告诉我从哪里开始寻找,我将不胜感激。
【问题讨论】:
-
你仍然需要整个有效载荷来计算校验和,那么增益是多少?
MultipartFile中也没有多个部分,Multipart是关于由多个部分组成的请求(它可以包含多个文件或一个文件和一个表单)。 -
你的最终目标是什么?为什么在文件存储到磁盘(或内存)后不能计算校验和?
-
我假设(可能是错误地)Tomcat 必须在上传文件时管理文件的切片,并将信息传达回客户端,显示与上传相关的任何“上传进度条”。这意味着文件是分多个部分上传的。不是这样吗?
-
最终目标/收益是在上传大文件时节省时间。目前,我们在单独的线程中计算校验和,但是如果文件保存在对象存储中,这会导致校验和不可用。理想情况下,我们希望在将文件上传到 Tomcat 时计算校验和,然后在 Spring 应用程序将其移动到对象存储时将该校验和用作元数据。这能回答你的问题吗?
标签: spring spring-mvc tomcat file-upload multipart