我的应用程序目录中有一个名为“uploads”的文件夹,用户可以在其中上传文件和下载文件。我不希望上传文件夹位于公共目录中,因为我想控制下载授权。
在我的控制器中,我有:
send_file Rails.root.join('app', 'uploads', filename), :type => 'application/zip', :disposition => 'inline', :x_sendfile=>true
这实际上工作正常。问题是当我在生产服务器上时,当我运行 rake assets:precompile 并且有一个 assets 目录时,文件会下载两次。第一次下载文件时,浏览器表现得好像什么都没有发生(没有加载旋转),但我在 Google Chrome 网络开发人员的网络选项卡中看到数据正在传输。然后在下载文件后,会出现一个提示,询问用户是否要下载文件。
删除公共目录中的资产文件夹可以解决这个问题,但我想使用资产管道。我还尝试将资产管道要求从 require_tree 更改为 require_directory。
有谁知道如何让 send_file 与资产管道正常工作?
谢谢。