gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中从 Amazon s3 读取手动上传的文件(图像/文本)?

转载 作者:行者123 更新时间:2023-12-02 13:25:43 25 4
gpt4 key购买 nike

首先,我对 Rails 和 Stack Overflow 还很陌生,目前正在摸索学习过程,所以如果我的帖子显得幼稚得可笑,我深表歉意。这是我的问题:

我正在尝试使用 Amazon s3 从头开始​​构建一个博客来存储资源,例如所有图像和文本。我不需要用户将内容上传到网站,所以我想我可以使用他们的 console.aws.amazon.com 控制台将所有内容手动上传到 s3。我正在尝试编写 Rails 代码以从 s3 存储桶中读取文件夹,然后将图像/文本指向数据库中的正确位置。例如,我可以在 s3 中创建一个名为“Post1”的文件夹,然后我的 Rails 应用程序读取该文件夹内所有内容的 URL 并将其指向数据库中的 post1,然后我可以简单地调用图像 URL 或文本,在 View 中并理论上显示它。我的问题是,如何让我的应用程序读取 s3 文件夹?

我知道我可能在这里重新发明轮子,但我的目标也是学习 Rails。预先感谢大家。您可以找到my project在 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

这是我的博客 Controller :

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::S3::Object#get .

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

我认为你可以执行s3_file.body

最后,您正在重新发明轮子,应该查看 carrierwave with aws-sdk .

关于ruby-on-rails - 如何在 Rails 中从 Amazon s3 读取手动上传的文件(图像/文本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36315596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com