2012-08-14 30 views
4

我想要做一些什麼,我認爲將是一個簡單的任務:提取上傳歸檔到S3與CarrierWave在Heroku

  • 與這些控件的窗體:
    • 文件上傳一個文件
    • 複選框,如果這個文件應該被提取
    • 文字輸入在那裏我會指定哪些文件,我應該鏈接到(只需要如果選中該複選框) - index_file
  • 提交表格後:
    • 如果該複選框檢查,通過CarrierWave文件上傳到S3到指定store_dir
    • 如果該複選框檢查,從存檔提取所有文件(我希望只有ZIP檔案;我需要保持的目錄結構),上傳提取的文件到指定store_dir,並設置在數據庫中的index_file(我並不需要保存至其他的解壓文件數據庫的任何東西)

正如我有發現,由於Heroku的限制,這不是一件容易的事。這些文件將具有較大的尺寸(數百個MiB或幾個GiB),因此如果可能的話,我不想從S3重新下載此文件。

我認爲使用Delayed Job或Resque可能會有效,但我不確定如何去做,以及我的問題的最佳解決方案是什麼。

有沒有人有任何想法如何解決它與儘可能使用最低的資源?如果在Heroku上不可能,我可以將CarrierWave更改爲另一個上傳者(Paperclip等)和我的託管提供商。

我也在考慮使用CloudFlare,請問這是否仍然沒有問題?

謝謝你的回答。

+0

嘿蒂米 - 你有沒有在這方面取得任何進展?我自己也有一個非常相似的挑戰,並研究建議。 – SirRawlins 2014-02-07 11:35:37

回答

1

根據this heroku support email,看起來/ tmp目錄的大小很多。你只需要自己清理一下,所以Heroku作爲一個平臺並不是問題。

一對夫婦的文章可以幫助您解決問題:

  1. https://github.com/jnicklas/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku - 這也解釋瞭如何配置你的應用程序使用/ tmp目錄作爲CarrierWave緩存目錄。注意下面的行:

    使用機架::靜態,:網址=> [ '/ carrierwave'],:根=> 'TMP' #加入這一行

    這指示機架服務/ carrierwave/xzy來自/ tmp目錄(用於臨時存儲圖像)

  2. 然後,使用uploader.cache! method,可以有意地緩存入站上傳的文件。一旦存儲,您可以執行檢查以確定是否調用uploader.store! method將內容升級到S3(假設您將S3配置爲CarrierWave的存儲區。
+0

感謝您的幫助,我會嘗試。 – Timmy 2012-08-15 19:28:03

相關問題