我有一个控制器操作,用于将文件发送给用户,以便在S3中从我的存储桶下载。
这是控制器代码:
send_file @project.file.url, :type => @project.file_content_type
这是错误:
Cannot read file http://s3.amazonaws.com/bucket/projects/1/project.xlsx?2011
当我直接访问该URL时,我会下载该文件!发生了什么事?
答案 0 :(得分:1)
如果您只是将用户重定向到S3上的文件,这没关系吗?
redirect_to @project.file.url
问题是send_file
需要一个本地文件的路径,然后网络服务器使用该路径从它可以在磁盘上访问的本地文件中提供数据。 S3上的文件只能通过HTTP访问,因此您的网络服务器无法提供服务。要使用send_file
,您必须先将其下载,然后再提供服务。