0

我有一个rails 3应用程序,允许用户通过回形针将它们上传到亚马逊s3来共享文件,并且我希望允许其他用户下载这些文件。不过,我的应用程序和Amazon S3之间的某些后处理似乎正在进行。Rails 3带文件上传/下载的回形针

这里是我的代码:

has_attached_file :attachment, 
        :storage => :s3, :s3_credentials => "#{RAILS_ROOT}/config/s3.yml", 
        :path => ':id/:style', :bucket => "test_development" 

这工作得很好,但是如果我真的去了Amazon S3的开发工具文件的URL只是似乎是:http://s3.amazonaws.com/test_development/1/original没有原来的名称或类型。 [p.attachment.url(:original, false), p.attachment_file_name].join("/")

这将产生:http://s3.amazonaws.com/test_development/1/original/test.pdf

但是,如果我得到这个网址我得到一个神秘的XML错误:

然后,我用这样的尝试

<Error> 
<Code>NoSuchKey</Code> 
<Message>The specified key does not exist.</Message> 
<Key>1/original/About Downloads.pdf</Key> 
<RequestId>7E5CC6A01CADF831</RequestId> 
<HostId> 
4ruFf0JtdalnaIE/SHUAqT8hVYEda9Ul6gxNmYTIAniw7piTN+Q16uKKCzi9yezl 
</HostId> 
</Error> 

我在做什么这里错了吗?我只是想将文件上传到s3而不进行任何处理,然后再次下载..我应该怎么做呢?

谢谢!

回答

2

:path选项用作完整的文件名。没有任何东西被添加,它只是插值。尝试:path => ':id/:style/:basename.:extension'

而且当您更改:path时,您还经常需要更改:url

更多的相关信息: