我正在使用 Tomcat 的 WebDAV servlet,当我发出 PUT 请求时,我似乎无法获得标题“Content-Length”。
如何获取我正在“放置”的文件的内容长度?
假设您的意思是您正在编写作为服务器端 PUT 操作一部分的代码 - 即您正在扩展 webdav servlet 或其他东西。然后,如果客户端通过 PUT 发送了一个文件并且没有 content-length 标头,那么您需要缓冲字节(可能到磁盘),然后使用生成的缓冲数据为您提供长度。
客户端发送没有内容长度的文件是完全合法的。在这种情况下,他们只需断开 TCP 连接以指示 EOF。
请注意,如果您正在扩展 tomcat webdav servlet,您可能还需要考虑使用 milton.io。它是一个旨在允许可插入后端的 webdav servlet。它还附带了一个与 tomcat 的 webdav servlet 等效的文件系统实现。