簡體   English   中英

如何從亞馬遜s3手動上傳的Rails(圖像/文本)中讀取文件?

[英]How do I read files, in Rails, (images/text) from Amazon s3 that were uploaded manually?

首先,我對Rails和Stack Overflow都很陌生,目前在學習曲線上一路狂奔,所以如果我的帖子是可笑的,那么我很抱歉。 這是我的問題:

我正在嘗試使用Amazon s3從頭開始構建博客來存儲資源,例如所有圖像和文本。 我不需要用戶將內容上傳到網站,所以我想我可以使用console.aws.amazon.com上的控制台手動上傳所有內容到s3。 我正在嘗試編寫Rails來讀取我的s3存儲桶中的文件夾,然后將圖像/文本指向數據庫中的正確位置。 例如,我可以在s3中創建一個名為“Post1”的文件夾,然后我的Rails應用程序從該文件夾中讀取所有內容的URL並將其指向數據庫中的post1,然后我可以簡單地調用圖像URL或文本,在視圖中,理論上,顯示它。 我的問題是,如何讓我的應用程序讀取s3文件夾?

我知道我可能在這里重新發明輪子,但我的目標也是學習Rails。 提前謝謝大家。 你可以在GitHub上找到我的項目

我的博客模型:

class BlogPost < ActiveRecord::Base
  has_attached_file :download,
                    :storage => :s3,
                    :s3_credentials => Proc.new{|a| a.instance.s3_credentials }

  def s3_credentials
    {:bucket => "S3_BUCKET_NAME", :access_key_id => "AWS_ACCESS_KEY_ID", :secret_access_key => "AWS_SECRET_ACCESS_KEY"}
  end

end

這是我的博客控制器:

class BlogController < ApplicationController
    before_action :load_posts


      def index  #this method puts all the stuff pulled from 'load_posts' and packages it nicely in a instanced variable
    @blogPosts = BlogPost.all
    end

    def load_posts  #this method should pull posts from AWS s3 and add them to the database (like magic)

    end

end

我確信我的代碼中存在大量漏洞......就像實際與s3交談一樣。 我知道我想做的大部分內容都可能出現在我的模型中。 我覺得很困惑。 我希望我可以使用一些簡單,神奇的Ruby方法,比如s3.file.read或者其他東西。 另一種選擇是為我自己創建一個表單,就像我是一個用戶一樣,將數據庫中的所有內容連接在一起,然后上傳到s3。 然而,當他們嘗試通過heroku上傳大文件(如大圖像)到s3時,我已經讀過人們遇到問題,比如dynos超時。 我已經閱讀了有關如何直接上傳到s3的教程,但我也可以跳過這個過程,只需點擊s3控制台上的“上傳”按鈕即可。 一切都會有所幫助。 再次感謝所有人。

你正在使用aws-sdk,好的,我會用s3.file.read等同於你:Aws Aws::S3::Object#get

# create your bucket first
s3_file = bucket.object['myfile.txt'].get({response_target: '/tmp/myfile.txt'})

我想你可以做s3_file.body

最后,你正在重新發明輪子,應該用aws-sdk檢查載波

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM