我试图在将文件流式传输到客户端之前设置 Content-Length 标头。我将其设置为:
response.headers['Content-Length'] = "12341234"
然后我做类似的事情:
steam do |out|
file_chunks.each do |chunk|
out << chunk
end
out.close
end
但是,当我尝试在浏览器中下载文件时,Content-Length 标头为空白。有谁知道这是 Sinatra 问题还是乘客/Apache 问题?
我假设发生的事情是这个代码块之间的某个层,当实际发送响应时,它看到它首先发送标头并且数据块是空的,因此即使我明确设置它,它也假定内容长度为 0。
还有另一种方法可以告诉浏览器我发送的文件有多大?
编辑
看起来是乘客问题而不是 Sinatra 问题。如果我以薄的方式运行服务器,则 Content-Length 将正确传递。我猜如果已经设置了 Content-Length ,问题会更改为不更改?