问题描述
|
我有一个Rails 3应用程序,该应用程序允许用户通过回形针将文件上传到Amazon s3,从而共享文件,并且我希望允许其他用户下载这些文件。但是,似乎对该文件在我的应用程序和Amazon s3之间的某个位置进行了某种后期处理。
这是我的代码:
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,而没有原始名称或类型。
然后,我尝试使用以下内容:something1ѭ
结果如下: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,而不进行任何处理,然后稍后再下载..我应该怎么做?
谢谢!
解决方法
:path
选项用作完整文件名。没有添加任何内容,仅进行插值。尝试:path => \':id/:style/:basename.:extension\'
。
而且,当您更改:path
时,通常还必须更改:url
。
更多信息:
http://rdoc.info/github/thoughtbot/paperclip/master/Paperclip/Storage/S3
http://rdoc.info/github/thoughtbot/paperclip/master/Paperclip/Storage/Filesystem
http://rdoc.info/github/thoughtbot/paperclip/master/Paperclip/ClassMethods#has_attached_file-instance_method