2013-11-23 46 views
0

我在Heroku上有一個Rails應用程序。從服務器端(使用InkFilepicker的REST API),我想轉換文件,將其保存到我的S3存儲桶並將S3 url存儲到我的模型中。使用REST API轉換並存儲到S3/InkFilepicker

具體而言:給定圖像(https://www.filepicker.io/api/file/hFHUCB3iTxyMzseuWOgG)我想將其轉換(https://www.filepicker.io/api/file/hFHUCB3iTxyMzseuWOgG/convert?w=200&h=150&fit=clip)並將轉換後的圖像存儲到我的S3存儲桶中。

編輯

這裏是我做結尾:

after_save :save_thumbnail_url_to_s3 

def save_thumbnail_url_to_s3 
    convert_options = { 
    fit: 'clip', 
    h:500, 
    w:500 
    } 
    file = open("#{self.url}/convert?#{convert_options.to_query}") 

    # Writing file into S3 bucket 
    amazon = AWS::S3.new(access_key_id: ENV['AWS_ACCESS_KEY_ID'], secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']) 
    bucket = amazon.buckets[ENV['AWS_BUCKET']] 
    object = bucket.objects[s3_media_path] 
    written_file = object.write(file, acl: :public_read) # :authenticated_read 
    self.update_column :thumbnail_url, written_file.public_url.to_s 
end 

回答

1

如果您使用的是filepicker.io API,您可以使用API​​轉換您的文件,然後使用下面的open-uri創建可發送到S3的文件流Tempfile,其行爲如同File在紅寶石

[3] pry(main)> require 'open-uri' => true [4] pry(main)> file = open(" https://www.filepicker.io/api/file/hFHUCB3iTxyMzseuWOgG/convert ?...") => # [5] pry(main)> file.class => Tempfile

0

您可以簡單地使用aws-s3寶石:https://github.com/marcel/aws-s3

但要小心,Heroku的是只有讀面向對象的,你只能在臨時文件上工作。

+0

但擺在首位API,哪能從URL到tmp目錄下載的圖片? –

+0

在Heroku服務器上操作文件不是一個好主意。我會尋找其他解決方案。你想要做什麼? –

+0

給定一個圖像(https://www.filepicker.io/api/file/hFHUCB3iTxyMzseuWOgG)我想將其轉換(https://www.filepicker.io/api/file/hFHUCB3iTxyMzseuWOgG/convert?...)和將轉換後的圖像存儲到我的S3存儲桶中。 –

相關問題