2012-06-22 41 views
0

我收到来自postmarkapp的附件(描述在这里:http://developer.postmarkapp.com/developer-inbound-parse.html#attachments)。fb_graph从base64编码的字符串上传照片

我想使用fb_graph(https://github.com/nov/fb_graph)使用它的照片将这些照片上传到Facebook!方法(https://github.com/nov/fb_graph/wiki/Photo-and-Album)。

这很简单,并且在通过指定来源(如来自实际文件的示例中的源代码)进行测试时工作正常。

但是我试图不写出一个文件,而只是将base64编码的字符串转换为StringIO并将其作为:source参数传递。这不工作,我得到这个错误:

ruby FbGraph::InvalidRequest: OAuthException :: (#324) Requires upload file

的原因,我不想写出来的文件是因为我使用的Heroku和delayed_job的,所以我不知道,如果一个文件当我处理完作业后,我仍然会写出来。这将是很好,但是因为我目前的计划是将图像存储在带有延迟作业的数据库中。

谢谢。

+0

我遇到的另一个问题是,mongoid和mongo不会将整个附件存储在数据库中,因此文件内容甚至没有进入delayed_job。我正在研究gridfs + mongoid,但这越来越像是一团糟。 – eagspoo

回答

0

我找不到一种方法使用heroku进行此项工作,而无需首先使用gridfs将其上传到mongohq。您不能使用雪松临时文件系统,因为在控制器操作期间写入的这些文件对于您的delayed_job工作程序不可见。

所以,即使它很烂我做到这一点;

  1. 从postmarkapp接收上传(块一个测功机)
  2. 编写使用网格FS来mongohq(这涉及到一个上载该块一个赛道)
  3. 队列作业中使用的delayed_job
  4. 从mongohq回读(块一名工人在下载)
  5. 重新上传发布

时,那为什么不直接发布至Facebook,如果我要去吨至FB o承担上传到mongohq的初始阻止成本?因为上传速度比上传到FB的速度要快得多,原因不明。

在Heroku的答案是有node.js的测功机处理从邮戳这些回调所以无论是从邮戳读或mongohq(或Facebook)写过程中不堵塞到了极致,然后做一些额外的工作让节点应用程序与Rails应用程序进行交互以保持同步。