2011-01-24 44 views
1

我有一个控制器操作,旨在将文件发送给用户以便从S3中的存储桶下载。从Paperclip下载文件

这里的控制器代码:

send_file @project.file.url, :type => @project.file_content_type 

这里的错误:

Cannot read file http://s3.amazonaws.com/bucket/projects/1/project.xlsx?2011 

当我直接去了网址,我得到一个下载的文件!这是怎么回事?

回答

1

如果您只是将用户重定向到S3上的文件,可以吗?

redirect_to @project.file.url 

的问题是,send_file预计到本地文件,然后将其用于通过服务器从本地文件可以在磁盘上存取服务了数据的路径。 S3上的文件只能通过HTTP访问,因此您的网络服务器无法使用它。要使用send_file,您必须先下载它,然后提供它我认为。

+0

@homairs - 你是什么意思,它期望一个'文件'?它不会识别一个简单的.pdf或.xslx文件吗? – sscirrus 2011-01-24 21:55:03