使用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,所以你的代码似乎以你喜欢的方式工作;)