如何使用 Net::SFTP 获取远程文件并将其流式传输,而无需等待整个文件下载?
我的 test.zip 文件大小为 1GB。当我运行这段代码时,我的浏览器几分钟内什么也没做,然后下载终于开始了。我希望它早点开始流式传输文件。我必须使用 Net::SFTP 或类似的东西,因为该文件只能通过 SSH 或 SFTP 获得。
我也试过Net::SFTP的下载和下载!方法并得到相同的结果。
headers['Content-Type'] = 'application/zip'
headers['Content-disposition'] = "attachment; filename=test.zip"
self.response_body = Enumerator.new do |lines|
Net::SFTP.start('example.com', 'foo', keys: ['~/.ssh/id_rsa.pub']) do |sftp|
file = sftp.file.open('/path/to/test.zip')
lines << file.read(4096) until file.eof?
end
end