使用rails通过fancyupload将内容上传到s3

时间:2009-11-24 23:55:43

标签: ruby-on-rails forms amazon-s3

我一直在尝试按照本教程让我的用户一次上传一堆mp3并查看进度。

http://www.railstoolkit.com/posts/uploading-files-directly-to-amazon-s3-using-fancyupload

我实现了它更多或完全实现了,但是我从策略文件中删除了一些东西,所以只有['starts-with', '$key', '#{key}/'],而不是其他启动 - 这些东西导致它在我手动时失败放一个字段并提交到表格中。

我也打开了详细模式。这是我在尝试上传文件时得到的结果:

Main::fireEvent "buttonEnter"Swiff.Uploader.js (line 370)
Main::fireEvent "buttonDown"Swiff.Uploader.js (line 370)
Main::fireEvent "buttonEnter"Swiff.Uploader.js (line 370)
Main::fireEvent "browse"Swiff.Uploader.js (line 370)
Main::fireEvent "buttonLeave"Swiff.Uploader.js (line 370)
Main::handleSelect Adding FilesSwiff.Uploader.js (line 370)
Main::hasFile: Checking tarzanandjane.mp3Swiff.Uploader.js (line 370)
Main::fireEvent "select": [[Object id=2 addDate=1259106078359 name=tarzanandjane.mp3 0=Object $family=Object], null, Object uploading=0 bytesLoaded=0 rate=0 size=2891446]Swiff.Uploader.js (line 370)
File[2]::start: ObjectSwiff.Uploader.js (line 370)
Main::fireEvent "fileStart": [Object id=2 addDate=1259106078359 name=tarzanandjane.mp3, Object uploading=1 bytesLoaded=0 rate=0 size=2891446]Swiff.Uploader.js (line 37

实际发生的是,它会创建一个带有卡住进度条的条目以及文件的正确大小,但似乎没有更多的事情发生。我还注意到,每次上传文件时,我都会在firebug的网络面板中出错:

ActionController::UnknownAction (No action responded to none. Actions: xxx...):
  C:\Ruby\bin\mongrel_rails:19:in `load'
  C:\Ruby\bin\mongrel_rails:19
  -e:2:in `load'
  -e:2

关于这些问题真正令人沮丧的是,我不确定调试它们的最佳方法是什么。我很难看出s3是否在抱怨某些东西而且在幕后默默地失败了。我可以获得URL参数字符串(看起来很好),但需要与文件一起发送,因此我不能将其复制并粘贴到我的amazonws文件中。我已经确定我的ACL很松散,它应该让任何人写任何东西。正如我之前说的,当我输入假文件字段并提交按钮时,它们被上传到s3。 “无”动作也非常烦人,因为我不知道在我的代码中可能导致什么。如果我甚至可以就调试这样的事情得到一些建议,那就太好了。

2 个答案:

答案 0 :(得分:1)

问题根源可能是Flash上​​传需要非空服务器响应(在mac上),而S3只返回201-OK标题。

尝试在评论帖中询问文章的原作者,他可以有更多的见解。

答案 1 :(得分:0)

这是该项目的有效实施。此外,如果您阅读下面的示例应用程序的自述文件,它将告诉您如何使用WireShark调试基于Flash的上传程序。它比把头撞在墙上要容易得多。

使用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