【发布时间】:2013-01-02 07:42:38
【问题描述】:
我试图在将文件流式传输到客户端之前设置 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?
【问题讨论】:
-
你不应该用
request['content-length']来设置它。响应是您从请求中得到的结果。
标签: ruby apache sinatra passenger