2012-06-22 72 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應用程序進行交互以保持同步。