0

我正在接收来自 postmarkapp 的附件(此处描述:http: //developer.postmarkapp.com/developer-inbound-parse.html#attachments)。

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

这很容易,并且在通过指定 :source 进行测试时工作正常,就像在实际文件的示例中一样。

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

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

我不想写出文件的原因是因为我使用的是heroku和delayed_job,所以我不确定我写出的文件在处理作业时是否仍然存在。但是,这会很好,因为我目前的计划是将图像存储在数据库中并延迟工作。

谢谢。

4

1 回答 1

0

如果不先使用 gridfs 将它上传到 mongohq,我找不到一种方法来使用 heroku。您不能使用 cedar 临时文件系统,因为这些文件是在控制器操作期间写入的,您的 delayed_job 工作人员将看不到这些文件。

所以即使我这样做很糟糕;

  1. 从 postmarkapp 接收上传(阻止一个测功机)
  2. 使用网格 fs 写入 mongohq(这涉及一个上传,它会阻止一个测功机)
  3. 使用delayed_job 排队作业
  4. 从 mongohq 回读(下载时阻止一名工作人员)
  5. 发帖时重新上传到FB

那么,如果我要承担上传到 mongohq 的初始阻塞成本,为什么不直接发布到 Facebook 呢?因为由于未知原因,上传比上传到 FB 要快得多。

heroku 上的正确答案是让 node.js dyno 处理来自邮戳的这些回调,因此在从邮戳读取或写入 mongohq(或 facebook)期间不会阻塞 dyno,然后做一些额外的工作来让节点应用程序与 rails 应用程序交互以保持同步。

于 2012-07-07T05:26:46.057 回答