文件到底什么时候传输到服务器?
When exactly are the files transmitted to the server?
如果我有一个处理文件上传的 servlet,服务器何时实际接收文件?
当我调用 HttpServletRequest::getParts
时它们是否已经可用,或者只有当我实际调用相应的 Part::write
时才会提取单个文件?
问题不同,我的 servlet 有责任实现所有文件的并行上游,还是我只需要担心将它们全部写入磁盘?
Are they already available when I invoke HttpServletRequest::getParts
是的。
or will the individual files only be fetched when I actually call the corresponding Part::write
?
从技术上讲,不会提取文件。服务器实际上并不从客户端“下载”文件。客户端将文件作为请求主体的一部分发送到服务器,服务器只需侦听这些文件并将它们写入临时存储,然后再调用服务方法。服务器只会在请求主体被完全读取时调用服务方法。这与请求正文内容类型无关。因此,上一个问题的“是”。
Asked differently, is it my servlet's responsibility to implement a parallel upstream of all files
绝对不是。您根本不需要在 HttpServletRequest
上同步任何内容。顶多只在HttpSession
,但连这个在这里都没有作用。
or do I just need to worry about writing them all to disk?
是的,正是这样。只需抓住 Part
,验证它并最终写入它。
另请参阅:
- Recommended way to save uploaded files in a servlet application
如果我有一个处理文件上传的 servlet,服务器何时实际接收文件?
当我调用 HttpServletRequest::getParts
时它们是否已经可用,或者只有当我实际调用相应的 Part::write
时才会提取单个文件?
问题不同,我的 servlet 有责任实现所有文件的并行上游,还是我只需要担心将它们全部写入磁盘?
Are they already available when I invoke
HttpServletRequest::getParts
是的。
or will the individual files only be fetched when I actually call the corresponding
Part::write
?
从技术上讲,不会提取文件。服务器实际上并不从客户端“下载”文件。客户端将文件作为请求主体的一部分发送到服务器,服务器只需侦听这些文件并将它们写入临时存储,然后再调用服务方法。服务器只会在请求主体被完全读取时调用服务方法。这与请求正文内容类型无关。因此,上一个问题的“是”。
Asked differently, is it my servlet's responsibility to implement a parallel upstream of all files
绝对不是。您根本不需要在 HttpServletRequest
上同步任何内容。顶多只在HttpSession
,但连这个在这里都没有作用。
or do I just need to worry about writing them all to disk?
是的,正是这样。只需抓住 Part
,验证它并最终写入它。
另请参阅:
- Recommended way to save uploaded files in a servlet application