提供正在写入的文件的最佳方式是什么?

我想设置一个Web服务器(或其他types的服务器?),这将允许客户端使用http下载文件。 但是,我想在完全写入磁盘之前开始提供文件。

理想情况下,服务器将发送尽可能多的数据,然后放慢速度,直到更多的数据准备就绪。

就浏览器而言,这应该看起来像是一个“常规”的下载,然而内容的长度在开始时并不知道。 这个可以吗?

任何build议如何设置这样的服务器?

就HTTP客户端而言,不发送Content-length头是完全正常的(尽pipe客户端将不能显示进度条,只是“我已经下载了X Kb,而且我不知道多less钱离开了”。

服务器端更难。 我能想到的唯一方法就是把它作为stream(使用编程语言 – PHP,CGI脚本等)附加到文件上,并返回内容。 问题出现在确定文件“完成”写入磁盘的时间(所以你可以告诉HTTP客户端它不必再等待了)。
有办法解决这个问题,但编程留给读者的练习:)