如果我有一个处理文件上传的servlet,那么服务器何时才真正接收到文件?
当我调用HttpServletRequest::getParts
时它们是否已经可用,还是仅当我实际调用相应的Part::write
时才获取单个文件?
提出不同的要求,是我的servlet负责在所有文件的上游实现并行操作还是我只需要担心将它们全部写入磁盘?
答案 0 :(得分:2)
当我调用
时,它们是否已经可用?HttpServletRequest::getParts
是的
还是仅当我实际调用相应的
Part::write
时才获取单个文件?
从技术上讲,不提取文件。服务器实际上并没有从客户端“下载”文件。客户端将文件作为请求主体的一部分发送到服务器,并且服务器仅需侦听这些文件并将它们写入临时存储,然后再调用service方法。仅在完全读取请求主体时,服务器才会调用服务方法。这与请求正文内容类型无关。因此,上一个问题的“是”。
提出了不同的要求,我的servlet负责在所有文件的并行上游实现
绝对不是。您根本不需要同步HttpServletRequest
上的任何内容。最多只能在HttpSession
上使用,但即使在这里也没有作用。
还是我只需要担心将它们全部写入磁盘?
是的,确实如此。只需抓住Part
,对其进行验证并最终将其写入。