我想设置一个 Web 服务器(或其他类型的服务器?),让客户端可以使用 http 下载文件。但是,我想在文件完全写入磁盘之前开始提供该文件。
理想情况下,服务器将发送尽可能多的可用数据,然后放慢速度直到更多数据准备就绪。
就浏览器而言,这应该看起来像是“常规”下载,但在开始时无法知道内容长度。这样可以吗?
关于如何设置这样的服务器有什么建议吗?
答案1
对于 HTTP 客户端而言,不发送标Content-length
头是完全没问题的(尽管客户端无法显示进度条,只是显示“我已经下载了 X Kb,但我不知道还剩下多少”。
服务器端更难。我能想到的唯一方法是将文件作为流附加到文件(使用编程语言 - PHP、CGI 脚本等)并返回内容。问题在于确定文件何时“完成”写入磁盘(这样您就可以告诉 HTTP 客户端它不必再等待了)。有
办法解决这个问题,但编程留给读者作为练习 :)