![](/img/trans.png)
[英]How can I get refinerycms to display uploaded image urls from Amazon S3 versus /system/images…?
[英]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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.