RT.
最新在设计一个支持文件传输的RPC协议,底层实现用的NIO,于是就想参考一下Tomcat和Jetty的文件上传实现
不看不知道,一看吓一跳,Tomcat和Jetty都是有个临时文件目录,请求体里的文件大小如果超过了规定的阈值,那么就会先转存到tomcat/jetty的临时文件目录里,然后把这个临时文件的读取流交给之后servlet
两者的逻辑都是先把文件读取完整之后再调用servlet::doPost处理。
而采用临时文件的原因在于这两者都是想一次性读取完所有的输入流之后再交由servlet处理
为什么一定要把文件先读取完之后再处理呢?完全可以封装一个特殊的InputStream,里面的read方法如果没有数据来的时候就会被阻塞住,通过这种方式,把异步转为同步,不需要先做临时文件持久化,我觉得没问题
临时文件这东西如果是在ssd上还凑活,普通hdd开销实在太大
求大佬解惑
###你好 这个问题有答案流吗 最近也碰到了