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

更多的相關信息: