Sinatra示例代码下载一个大文件

Sinatra示例代码下载一个大文件,sinatra,Sinatra,我开始使用sinatra 现在我正在使用以下代码来处理文件下载, 它适用于小文件,但对于大于500MB的大文件来说效果很好 连接在中间断开 dpath = "/some root path to file" get '/getfile/:path' do |path| s = path.to_s s.gsub!("-*-","/") fn = s.split("/").last s = dpath +"/"+ s send_file s,:filename

我开始使用sinatra

现在我正在使用以下代码来处理文件下载, 它适用于小文件,但对于大于500MB的大文件来说效果很好 连接在中间断开

dpath = "/some root path to file"
get '/getfile/:path' do |path|
    s = path.to_s
    s.gsub!("-*-","/")
    fn = s.split("/").last
    s = dpath +"/"+ s
    send_file s,:filename => fn
end
两件事:

您的
validate
方法做什么?如果它试图在内存中打开文件,您的服务器上的ram可能会用完(尤其是大文件)


您在哪里设置
fn
?它是get范围内的一个局部变量,在您的代码示例中没有设置它。

客户端或服务器日志是否返回任何错误代码?dpath-root path defined goballyme可能在我编辑代码的地方引发超时错误。。我正在一个小项目中使用它。我想知道我的方法是否正确。。如果我错了,请纠正我。谢谢你