使用send_file将下载的zip文件下载到浏览器而无需使用rails服务器
问题描述:
我正在使用以下代码片段来允许用户下载zip文件。这里的路径是S3存储桶上的链接。我想确认文件是否会直接从S3下载到浏览器,或者是否会首先下载到导航服务器&,然后从那里流式传输?使用send_file将下载的zip文件下载到浏览器而无需使用rails服务器
如果是后者,避免这种情况的最好方法是什么?
path = "#{file.download_attachment.path}"
send_file path, :type => 'application/zip',
:disposition => 'attachment',
:filename => "#{file.name}.zip"
答
在这个问题上接受的答案:Difference between rails send_data and send_file, with example将解释由send_file和SEND_DATA之间的差异。
如果您想传送某些内容,请使用send_data。如果你想发送一个已经存在的文件,使用send_file,所以你的代码似乎以你喜欢的方式工作;)