5 回答
除了bucket、key和acl的条件外,策略文档还必须包含name、Filename和success_action_status的规则。例如:
["starts-with", "$name", ""], ["starts-with", "$Filename", ""], ["starts-with", "$success_action_status", ""],
Filename
是 Flash 后端发送的字段,但 HTML5 后端不发送。该
multipart
设置必须为 True,但这是目前的默认设置。该
multipart_params
设置必须是具有以下字段的字典:key
AWSAccessKeyId
acl = 'private'
policy
signature
success_action_status = '201'
设置
success_action_status
为 201 会导致 S3 返回带有 HTTP 状态代码 201 的 XML 文档。这是使 flash 后端工作所必需的。(当响应为空且代码为 200 或 204 时,Flash 上传会停止。如果响应是重定向,则会导致 I/O 错误。)S3 不理解块,因此删除
chunk_size
配置选项。unique_names
可以是 True 或 False,两者都有效。
最新的 Plupload 版本包含说明性示例,很好地展示了如何使用 Plupload 使用 Flash 和 SilverLight 运行时将文件上传到 Amazon S3。
这是最新的文章:上传到 Amazon S3
官方 Plupload 教程,比这里的答案详细得多:https ://github.com/moxiecode/plupload/wiki/Upload-to-Amazon-S3
如果您使用的是 Rails 3,请查看我的示例项目:
使用 Rails 3、Flash 和基于 MooTools 的 FancyUploader 直接上传到 S3 的示例项目:https ://github.com/iwasrobbed/Rails3-S3-Uploader-FancyUploader
使用 Rails 3、Flash/Silverlight/GoogleGears/BrowserPlus 和基于 jQuery 的 Plupload 直接上传到 S3 的示例项目:https ://github.com/iwasrobbed/Rails3-S3-Uploader-Plupload
我想注意,不要忘记将 crossdomain.xml 上传到您的 s3 主机,如果您有 success_action_redirect url,则该域上也需要有 crossdomain.xml 文件。我花了 1 天时间解决这个问题,终于找到了问题所在。所以下次想想flash是如何在里面工作的。
希望我为某人节省时间。