问答

Tomcat Multipart 请求处理,大文件上传为什么需要先写入到临时

作者:admin 2021-09-10 我要评论

RT. 最新在设计一个支持文件传输的RPC协议,底层实现用的NIO,于是就想参考一下Tomcat和Jetty的文件上传实现 不看不知道,一看吓一跳,Tomcat和Jetty都是有个临...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

RT.
最新在设计一个支持文件传输的RPC协议,底层实现用的NIO,于是就想参考一下Tomcat和Jetty的文件上传实现

不看不知道,一看吓一跳,Tomcat和Jetty都是有个临时文件目录,请求体里的文件大小如果超过了规定的阈值,那么就会先转存到tomcat/jetty的临时文件目录里,然后把这个临时文件的读取流交给之后servlet

两者的逻辑都是先把文件读取完整之后再调用servlet::doPost处理。
而采用临时文件的原因在于这两者都是想一次性读取完所有的输入流之后再交由servlet处理

为什么一定要把文件先读取完之后再处理呢?完全可以封装一个特殊的InputStream,里面的read方法如果没有数据来的时候就会被阻塞住,通过这种方式,把异步转为同步,不需要先做临时文件持久化,我觉得没问题

临时文件这东西如果是在ssd上还凑活,普通hdd开销实在太大

求大佬解惑

###

你好 这个问题有答案流吗 最近也碰到了

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • Tomcat Multipart 请求处理,大文件上

    Tomcat Multipart 请求处理,大文件上

  • vue项目配置ts后,没办法用extentions

    vue项目配置ts后,没办法用extentions

  • 根据所选的条件,将数组对象转化为符合

    根据所选的条件,将数组对象转化为符合

  • php try catch 的疑惑

    php try catch 的疑惑

腾讯云代理商
海外云服务器