ruby on rails爬坑(四):使用AWS S3存取数据

[ruby on rails] docker中使用rails 有时候官方仓库注册服务器下载较慢,可以从其他仓库下载。从其它仓库下载时需要指定完整的仓库注册服务器地址。 阅读详情

一,前言

在上一篇博客ruby on rails爬坑(三):图片上传及显示中提到AWS S3,这篇博客将简单介绍如何在rails项目中使用AWS S3.

二,步骤

  • 在亚马逊云服务中心开通配置AWS S3服务
  • 在Gemfile中添加aws-sdk

    gem 'aws-sdk', '~> 2'
  • 在config/initializers文件夹下新建aws.rb(initializers文件夹下的内容在程序启动时会被自动调用),用于在全局初始化S3_BUCKET,一处配置,各处使用,内容如下:

    region = "your region name"
    accessKeyID = "your keyID" 
    secretKey = "your key"
    bucket = "your bucket name"
    
    Aws.config.update({
      region: region,
      credentials: Aws::Credentials.new(accessKeyID, secretKey),
    })
    
    S3_BUCKET = Aws::S3::Resource.new.bucket(bucket)
  • 上传测试: 尝试上传一首歌

    
    #url:文件的本地路径
    
    def upload_mp3(url)
        md5 = Digest::MD5.hexdigest(url)
    
        file = Tempfile.new([md5, '.mp3'])
        file.binmode
        open(URI.parse(url)) do |data|
          file.write data.read
        end
        file.rewind
    
        key = "#{Time.now.strftime("%Y/%m%d")}/#{md5}.mp3"
    
        obj = S3_BUCKET.object("audio/#{key}")  #使用之前配置好的S3_BUCKET
        obj.upload_file(file, {
          :content_type => "audio/mpeg",
          :cache_control => "max-age=604800",
          :acl => "public-read"
        })
        return obj.public_url  #返回S3中该文件的地址,供我们下载使用
    end
  • 下载测试: region-name, bucket-name分别与上文配置的region, bucket对应,object-key与上文上传测试中指定的key对应。

    s3 = Aws::S3::Client.new(region: 'region-name')
    resp = s3.get_object(bucket:'bucket-name', key:'object-key')
    
    resp.body
    
    #=> #<StringIO ...> 
    
    
    resp.body.read
    
    #=> '...'
    

三,补充

两篇关于上传和下载的官方博客:

至于S3更详细的内容,请查阅官方文档, 我正好用到上传下载,学得比较浅,有纰漏望指出。

Ruby on Rails 容器化开发:Docker Compose 实战指南 容器化是现代 Ruby on Rails 应用保障环境一致性的核心技术手段。其核心原理在于通过声明式配置(如 docker-compose.yml)固化 Ruby 版本、Gem 依赖、PostgreSQL 主版本、Redis 协议等运行时契约,消除因操作系统差异、本地工具链冲突(如 Homebrew portable ruby 失败、OpenSSL 版本不兼容)导致的‘环境病’。该技术显著提升团队协作效率与 CI/CD 可靠性,广泛应用于 Rails 开发、测试及预发布环境搭建。本文聚焦 Docker Co 阅读详情

相关推荐

Golang使用AWS SDK操作S3对象存储

在本文中,我们将探讨如何使用Golang编程语言和AWS SDK来操作AWS S3对象存储。AWS SDK提供了丰富的功能和API,使我们可以方便地进行云存储的管理和操作。除了上传文件之外,AWS SDK还提供了许多其他功能,如下载文件、列出存储桶中的对象、删除对象等等。接下来,我们设置要上传的本地文件的路径和S3存储桶的名称。最后,我们使用S3服务客户端的。在上面的示例中,我们首先创建了一个新的AWS会话,并指定了所在的区域。请注意,上述代码中的区域和存储桶名称是示例值,需要根据您的实际情况进行替换。

HoUnix的博客 959

React useWebSocket 最佳实践:10个提升开发效率的技巧

React useWebSocket 是一个强大的 React Hook,专为 WebSocket 通信设计,能帮助开发者轻松实现实时数据交互功能。本文将分享10个实用技巧,助你快速掌握这个工具并提升开发效率。 ## 1. 基础使用:快速建立连接 使用 useWebSocket 的最基本方式是传入 WebSocket 服务器 URL: ```javascript const { lastMe

gitblog_00139的博客 576

云架构师进阶【SAP迁移方案设计】手把手教您玩转SAP上云

一,项目背景介绍 今天又接到了北京某制造企业SAP迁移的场景,先简单说明一下,好好的SAP在运行着为什么要做迁移这类大动作呢?众所周知SAP的ERP是企业的绝对核心系统,尤其对于制造业更是核心的系统,这样一套核心系统还是生产环境在迁移的过程中必然要面临比较大的挑战,如果有任何问题的话,都会对企业的绩效产生很大的影响。 经过跟客户沟通才得知,客户的SAP原来的系统是托管在运营商机房里,近期感染了勒索病毒,导致业务宕机,SAP应用服务器无法启动,仅有的数据库服务器可以运行。基于上述情况公司领导当机立断决定迅

bdsh818的博客 4220

go操作亚马逊S3教程(aws)

go操作亚马逊S3教程

weixin_45565886的博客 3006

基于Qt与PaddleOCR的跨平台OCR工具开发实战

本文详细介绍了基于Qt与PaddleOCR开发跨平台OCR工具的实战经验。通过Qt的跨平台特性和PaddleOCR的高效识别能力,开发者可以快速构建支持Windows、Linux和macOS的OCR工具。文章涵盖了环境配置、核心功能实现、性能优化及打包发布等关键环节,特别针对中文识别、内存管理和多线程处理等常见问题提供了解决方案。

weixin_30296405的博客 89

从XSA到Linux应用:Petalinux与Vitis的嵌入式开发全流程解析

本文详细解析了从XSA文件到Linux应用的嵌入式开发全流程,重点介绍了Petalinux与Vitis工具链的使用技巧和实战经验。通过XSA硬件描述、Petalinux工程搭建、系统镜像优化及Vitis开发配置等关键步骤,帮助开发者高效完成ZYNQ平台开发,解决常见问题并提升开发效率。

weixin_29195217的博客 192

golang 使用aws IAM 访问s3服务,上传图片,并公共访问权限

golang 使用aws IAM 访问s3服务,上传图片,并公共访问权限

qq_37106501的博客 1823

Python与.NET革命性互操作:PythonNet实现零门槛双向调用——深度解析与实战案例

跨语言调用实战指南:Python与.NET深度集成 摘要:本文详解Python与.NET双向互调技术,通过PythonNet和Python.Runtime实现高效跨语言协作。核心优势包括:无缝集成Python机器学习模块(如PaddleOCR)与.NET UI框架,内存直传提升90%数据效率,减少80%重复代码。内容涵盖:1)Python调用.NET类库的完整流程;2)C#动态加载Python脚本及环境配置要点;3)反射机制实现私有方法调用与泛型处理;4)性能优化技巧(类型缓存、NumPy数组转换);5)异

墨夶的博客 611

aws开发作业

目录 文章目录目录前言1. 创建AWS资源1.1 创建AWS S3存储桶创建权限控制跨域请求配置1.2创建lambda函数创建并编写代码捆绑一个S3存储桶(测试)测试lambda函数1.3 创建 SNS主题创建标准类型的SNS添加订阅给S3创建事件通知S3事件目标绑定SNS2.架构设计3. vue制作前端页面前端页面展示4. lambda函数的优势5. S3存储桶的优势6. AWS SDK for JS6.1 JS调用S3的资源V3 SDK JS ListObjectsV2 SDK JS upload7.

qq_43203949的博客 1452

DataCastle-租金预测

ID:编号;时间:房屋信息采集的时间;小区名:房屋所在小区,已脱敏处理;小区房屋出租数量:小区出租房屋数量,已脱敏处理;楼层:0、1、2分别表示楼层低,中,高;总层数:房屋所在建筑的总楼层数,已脱敏处理;房屋面积:房屋面积数值,已脱敏处理;房屋朝向:房屋的朝向;居住状态:房屋的居住状态,表示是否已出租或居住中,已脱敏处理;卧室数量:户型信息,数字表示卧室的个数;卫的数量:户型信息,数字表示卫生间的个数;厅的数量:户型信息,数字表示厅的个数;

优快云 精品推荐 3457

数字图像处理 基于matlab、opencv计算图像的梯度方向和梯度幅值

图像可以被视为标量场(即二维函数)。通过微分将标量场转换为矢量场。梯度是一个向量,描述了在x或y方向上移动时,图像变化的速度。我们使用导数来回答这样的问题,图像梯度的大小告诉图像变化的速度,而梯度的方向告诉图像变化最快的方向。因为梯度有方向和大小,所以将这些信息编码为向量是很自然的。该向量的长度提供了梯度的大小,而其方向提供了梯度方向。因为梯度在每个位置可能不同,所以我们在每个图像位置用不同的向量来表示它。

学以致用 知行合一 3202

AWS::S3与Ruby on Rails集成指南:如何在Web应用中管理云存储

AWS::S3是Amazon S3 REST API的Ruby实现,为Ruby开发者提供了便捷的云存储管理工具。本指南将详细介绍如何在Ruby on Rails应用中集成AWS::S3,实现高效的云存储管理功能,帮助开发者轻松处理文件上传、存储和访问等常见需求。 ## 快速入门:AWS::S3的安装与配置 要在Ruby on Rails项目中使用AWS::S3,首先需要将其添加到项目依赖中。在

gitblog_00828的博客 1032

156、手机摄像头模组结构拆解:从保护盖到 FPC 连接器的完整装配剖面

本文深入解析手机摄像头模组结构设计要点。作者结合项目经验,指出保护盖密封胶在低温收缩会导致边缘漏光问题,强调结构细节比算法参数更关键。文章逐层拆解模组组件:保护盖厚度需平衡抗冲击与光学性能;镜筒内镜片组装配顺序和公差控制直接影响成像质量;IR滤光片厚度公差±0.02mm会改变红外截止波长;CSP封装需注意金线加固;FPC连接器的信号完整性和机械可靠性设计。最后给出5条实用建议,包括密封胶选型、镜片对位检测等,强调模组结构设计是"一票否决制"的基础工程。(149字)

sundong_81的博客 104

AWS SDK Rails集成指南:10分钟快速上手AWS服务

🚀 还在为Rails应用集成AWS服务而烦恼吗?AWS SDK Rails插件为您提供终极解决方案!这个官方gem让您能够轻松将AWS服务无缝集成到Ruby on Rails应用中,无需复杂的配置和繁琐的代码编写。 ## 什么是AWS SDK Rails? AWS SDK Rails是AWS官方推出的Ruby gem,专门为Ruby on Rails框架设计的AWS服务集成工具。它通过简单的

gitblog_00463的博客 997

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

ruby on rails爬坑(三):图片上传及显示

一,问题及思路最近在用rails + react + mysql基本框架写一个cms + client的项目,里面涉及到了图片的上传及显示,下面简单说说思路,至于这个项目的配置部署,应该会在寒假结束总结分享一下。rails中图片上传及显示要解决主要问题是: 图片存在哪? 图片格式大小? 客户端怎么显示图片? 因为这是个小项目,估计最多1000张图片,最多占用空间1G,所以采取相对简便的方法:图片保存

沉淀 5203

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

如何快速构建AWS Ruby应用:Rails与云服务的终极集成指南

AWS Ruby开发是将Rails应用与Amazon Web Services (AWS) 云服务完美结合的技术方案,通过AWS提供的丰富工具和服务,开发者可以轻松构建高可用、可扩展的Web应用。本文将详细介绍如何利用AWS Ruby SDK和相关资源,实现Rails应用与AWS服务的无缝集成,帮助新手和普通用户快速上手。 ## AWS Ruby SDK:连接Rails与云服务的桥梁 AWS提

gitblog_00953的博客 350

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

AWS::S3 Ruby库终极指南:如何快速上手Amazon S3存储服务

想要在Ruby应用中轻松集成Amazon S3云存储服务吗?AWS::S3 Ruby库为您提供了完整的解决方案!这个强大的Ruby实现让您能够无缝访问Amazon S3 REST API的所有功能,无论是存储用户上传的文件、管理静态资源还是构建分布式文件系统,都能轻松应对。在本篇完整指南中,我将带您深入了解AWS::S3库的核心功能、安装配置方法以及实际应用场景。 ## 🚀 AWS::S3 R

gitblog_00594的博客 956

Rails Ruby Bench 使用指南

Rails Ruby Bench 使用指南 一、项目目录结构及介绍 Rails Ruby Bench 是一个基于 Ruby on Rails 的性能基准测试项目,用于评估 Ruby 语言及其不同版本在实际应用中的表现。以下是其主要的目录结构和关键文件说明: bin: 存放可执行脚本,如 setup.rb 用于环境准备等。 data: 可能存放用于测试的数据文件。 docker: 相关 Docke...

gitblog_00261的博客 1210

【亲测免费】 Ruby on Rails 中文指南:从入门到实践

Ruby on Rails 中文指南:从入门到实践 项目介绍 Ruby on Rails, 简称 Rails, 是一个开源的全栈 web 应用框架,基于 Ruby 语言。本项目 rusrails/rusrails 提供了完整的俄罗斯语(及适用于俄语社区的)Rails 教程资源,旨在帮助开发者更容易地学习和掌握 Ruby on Rails 的精髓。它覆盖了从基础概念到进阶技巧,包括 Active ...

gitblog_00400的博客 919

AWS Rails Provisioner 使用指南

AWS Rails Provisioner 使用指南 AWS Rails Provisioner 是由 AWS Labs 开发的一个开源工具,旨在简化 Ruby on Rails 应用在 Amazon Web Services (AWS) 上的部署和资源配置过程。本指南将带你了解其基本结构、启动机制以及配置方法,帮助你快速上手此工具。 1. 项目的目录结构及介绍 AWS Rails Provisi...

gitblog_00211的博客 372

Ruby on Rails + graphql-ruby 查询实战:从 Link 数据模型到 Query 解析器与 GraphiQL 调试

本篇教程围绕 How to GraphQL 项目中的 Ruby 后端实战章节展开,讲解如何在一个 Ruby on Rails 应用中接入 graphql-ruby 框架,完成 GraphQL 服务端的第一个查询能力:通过 `allLinks` 查询返回链接列表。你将掌握数据库模型生成、GraphQL 对象类型(Object Type)定义、根查询类型(Query Type)与解析器(Resolve

gitblog_00367的博客 337

Lamby:简化Rails与AWS Lambda集成的终极指南 [特殊字符]

想要在AWS Lambda上运行Rails应用却担心配置复杂?Lamby就是你的完美解决方案!这款开源工具专门为简化Rails与AWS Lambda的集成而设计,让开发者能够轻松构建无服务器应用。 ## 什么是Lamby? 🤔 Lamby是一个专门为Ruby on Rails开发者设计的轻量级集成工具,它巧妙地将Rails应用与AWS Lambda无服务器计算服务连接起来。通过Lamby,你

gitblog_00875的博客 696

AWS Elastic Beanstalk 管理实战:使用 Ruby SDK 描述应用、列举解决方案堆栈并部署新版本(基于 aws-doc-sdk-examples)

本文围绕 aws-doc-sdk-examples 仓库中 [ruby/example_code/elasticbeanstalk/](https://link.gitcode.com/i/e800e4e388663531e2cda4a8674e967b) 这一官方示例目录展开,讲解如何用 AWS SDK for Ruby v3 管理 AWS Elastic Beanstalk 应用与环境。读完本

gitblog_01134的博客 1005

每天省5000美元、18PB数据大迁徙!Ruby On Rails之父冲刺“下云”的最后49天

其中,Basecamp 是一款面向团队协作的 Web 项目管理平台,采用 SaaS 模式运营,服务于来自全球五大洲、166 个国家的用户,超过 75,000 家企业和组织在使用它,此前已在云端稳定运行十余年。早在 2022 年,DHH 和他的团队就在裸机、虚拟机,还有 Kubernetes 容器上折腾过一圈,也试用了不少云厂商提供的服务。”,DHH 称,其已经在两个主要的数据中心安装好了替代方案——来自 Pure Storage 的设备,总共 18PB 的存储容量,并通过长距离复制确保安全性。

优快云资讯 4764

rails php,外媒速递:编程语言Ruby on Rails与PHP的对决

【51CTO.com原创稿件】外媒速递是核子可乐精选的近日国外媒体的精彩文章推荐,希望大家喜欢!今天给大家推荐的内容包括:编程语言Ruby on Rails与PHP的对决、着手使用Amazon Athena前需要考虑的九项要点、八款免费SharePoint工具令IT管理员的生活更加轻松愉快和五种方式实现QA团队效率***化等。一、编程语言对决:Ruby on Rails对PHPPHP与Ruby ...

weixin_32724679的博客 293
上一篇: ruby on rails爬坑(三):图片上传及显示
下一篇: ReactJS修炼之路(三):props vs state
Sheldon_Law
博客等级 码龄11年 44粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值