如何使用 Rails 和七牛云存储,在 15 分钟内打造一个图片分享社交应用原型

yizhihongxing

下面是如何使用 Rails 和七牛云存储,在 15 分钟内打造一个图片分享社交应用原型的完整攻略。

准备工作

在开始前,你需要做好以下几个准备工作。

安装 Rails

首先,你需要在本地安装 Ruby on Rails,可以通过 RubyGems 安装最新版的 Rails。

gem install rails

注册七牛账号并创建存储空间

其次,你需要注册一个七牛账号,并创建一个存储空间,将来我们会将图片存储在这个空间。

安装 qiniu gem

最后,你需要安装 qiniu gem,它是一个 Ruby SDK,方便你使用七牛云存储的 API。

gem install qiniu

创建 Rails 应用

接下来,你可以通过以下命令创建一个新的 Rails 应用。

rails new image_share
cd image_share

集成七牛云存储

配置七牛云存储

在项目中,我们需要通过 qiniu gem 将图片上传到七牛云存储,并在页面中显示。

首先,我们需要在 config/initializers/qiniu.rb 文件中添加以下代码,并将其中的 ACCESS_KEY、SECRET_KEY 和 BUCKET_NAME 替换为你自己的密钥和存储空间名称。

require 'qiniu'

Qiniu.establish_connection! access_key: 'ACCESS_KEY',
                            secret_key: 'SECRET_KEY'

BUCKET_NAME = 'BUCKET_NAME'

编写上传图片和显示图片的代码

接下来,我们需要在 app/controllers/images_controller.rb 中编写上传图片和显示图片的代码。

首先,我们需要添加 create 方法,来处理上传图片请求。在该方法中,我们首先需要将上传文件存储到本地,然后将其上传到七牛云存储,并返回上传成功后的 URL。

class ImagesController < ApplicationController
  def create
    uploaded_io = params[:image][:file]
    filename = SecureRandom.uuid + File.extname(uploaded_io.original_filename)
    File.open(Rails.root.join('public', 'uploads', filename), 'wb') do |file|
      file.write(uploaded_io.read)
    end

    key = filename
    filepath = Rails.root.join('public', 'uploads', filename).to_s
    put_policy = Qiniu::Auth::PutPolicy.new(BUCKET_NAME, key)
    uptoken = Qiniu::Auth.generate_uptoken(put_policy)
    code, result, response_headers = Qiniu::Storage.upload_with_token_2(
      uptoken, filepath, key, nil, bucket: BUCKET_NAME
    )

    render json: { url: "https://#{BUCKET_NAME}.qiniudn.com/#{filename}" }
  end
end

然后,我们需要添加 show 方法,来显示图片。在该方法中,我们只需要根据传入的文件名从七牛云存储中获取 URL 并返回即可。

class ImagesController < ApplicationController
  def show
    filename = params[:id]
    render json: { url: "https://#{BUCKET_NAME}.qiniudn.com/#{filename}" }
  end
end

最后,我们需要在 config/routes.rb 中添加两个路由,以便访问上述两个方法。

Rails.application.routes.draw do
  resources :images, only: [:create, :show]
end

编写前端代码

最后,我们需要在前端代码中,通过 JavaScript 发送上传图片的请求,并将上传成功后返回的 URL 显示在页面上。

修改前端代码

首先,我们需要在 app/views/layouts/application.html.erb 中,添加引入 qiniu.js 和一个用于显示上传结果的元素。

<%= javascript_include_tag "https://cdn.staticfile.org/qiniu-js-sdk/1.0.24/qiniu.min.js" %>

<div class="container">
  <%= yield %>

  <div id="upload_result"></div>
</div>

然后,我们需要在 app/views/images/new.html.erb 中添加上传图片的表单,并编写 JavaScript 代码。

<h1>Upload Image</h1>

<p>
  <%= form_tag images_path, method: :post, authenticity_token: true do %>
    <%= file_field_tag :file %>
    <%= submit_tag "Upload" %>
  <% end %>
</p>

<script>
  $(function() {
    $('form').submit(function(e) {
      e.preventDefault();
      var formData = new FormData($(this)[0]);
      $.ajax({
        url: $(this).attr('action'),
        type: $(this).attr('method'),
        data: formData,
        async: false,
        cache: false,
        contentType: false,
        processData: false,
        success: function(result) {
          $('#upload_result').append($('<img>').attr('src', result.url));
        },
        error: function(xhr, status, error) {
          console.log(xhr.responseText);
        }
      });
      return false;
    });
  });
</script>

运行 Rails 应用

最后,我们可以通过以下命令启动 Rails 应用,并访问 http://localhost:3000/images/new 网址上传图片并上传成功后将图片显示在页面上。

rails server

示例说明

  1. 已经有一个 Rails 应用,现在需要将图片上传至七牛云存储并在页面上显示。

首先,在 config/initializers/qiniu.rb 文件中添加七牛云存储的配置信息,然后在 app/controllers/images_controller.rb 中编写上传图片和显示图片的代码,并在前端代码中添加上传图片的表单和 JavaScript 代码。最后启动 Rails 应用,在网页上上传图片并上传成功后将图片显示在页面上。

  1. 已经使用了七牛云存储,但需要将图片上传和显示的代码整合到一个控制器中。

首先,将上传图片的代码迁移到 index 方法中,然后重命名 show 方法为 index 方法,将其用于显示图片并直接返回 URL。在前端代码中修改 AJAX 请求的 url,以便将其发送到 index 方法中。最后修改路由,将 show 路由改为 index 路由。完成后可以测试上传图片并将图片显示在页面上。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何使用 Rails 和七牛云存储,在 15 分钟内打造一个图片分享社交应用原型 - Python技术站

(0)
上一篇 2023年5月17日
下一篇 2023年5月17日

相关文章

  • 从软件+服务解读微软云计算

    也许每个人对云计算的理解不同,也许大家都是在盲人摸象。Forester Research从云计算提供商的角色这样定义:云计算是一种标准化的IT能力,将软件、应用平台、基础设施整合建立起来一个系统,通过Internet技术以按需和自助的方式提供服务。目前,归纳云服务提供商所提供的SaaS(软件即服务)、PaaS(平台即服务)、IaaS(基础设施即服务)三种模式…

    云计算 2023年4月12日
    00
  • 云计算的三种服务模式——–IaaS, PaaS和SaaS

    SaaS:Software-as-a-Service(软件即服务) 1. SaaS:Software-as-a-Service(软件即服务)提供给客户的服务是运营商运行在云计算基础设施上的应用程序,用户可以在各种设备上通过客户端界面访问,如浏览器。客户不需要管理或控制任何云计算基础设施,包括网络、服务器、操作系统、存储等等; PaaS:Platform-as…

    云计算 2023年4月13日
    00
  • 阿里云杨敬宇:5G时代,边缘计算将发挥更大价值

    摘要:            “5G时代,边缘计算将发挥更大价值。”3月8日,阿里云边缘计算技术负责人杨敬宇向媒体表示,边缘计算作为5G时代的一项关键技术,未来将成为不可或缺的基础设施之一。 “5G时代,边缘计算将发挥更大价值。”3月8日,阿里云边缘计算技术负责人杨敬宇向媒体表示,边缘计算作为5G时代的一项关键技术,未来将成为不可或缺的基础设施之一。 5G时…

    云计算 2023年4月12日
    00
  • VUE中如何调用高德地图获取当前位置(VUE2.0和3.0通用)

    VUE中如何调用高德地图获取当前位置(VUE2.0和3.0通用) 在VUE中,我们可以使用高德地图API来获取当前位置。本文将提供一个完整的攻略,包括如何引入高德地图API、如何获取当前位置、如何使用示例代码内容。 引入高德地图API 在开始使用高德地图API时,我们需要在HTML文件中引入高德地图API。以下是一个示例说明,演示如何引入高德地图API: &…

    云计算 2023年5月16日
    00
  • Ubuntu 18.04 LTS版已发布:AMD安全内存加密等多方面升级(附下载地址)

    Ubuntu 18.04 LTS版已发布:AMD安全内存加密等多方面升级(附下载地址) Ubuntu 18.04 LTS版已于2018年4月26日发布,这是一次重大的升级,包括了多方面的改进和升级,其中最重要的是AMD安全内存加密技术的支持。本文将详细讲解Ubuntu 18.04 LTS版的升级过程和注意事项,并提供两个示例说明。 1. 下载Ubuntu 1…

    云计算 2023年5月16日
    00
  • XenServer 详细介绍与 虚拟化系列-Citrix (XenServer 6.1) 安装与配置

    XenServer 详细介绍与 虚拟化系列-Citrix (XenServer 6.1) 安装与配置 XenServer是一款由Citrix公司开发的虚拟化平台,它可以将一台物理服务器虚拟化为多个虚拟机,从而提高服务器的利用率和灵活性。本文将详细介绍XenServer的特点和优势,以及如何安装和配置XenServer 6.1。 1. XenServer的特点…

    云计算 2023年5月16日
    00
  • 第五届云计算大会······我走了

    伴随着隆隆的地铁声·····我们离开了国家会议中心!回想起这几天的“兴奋之旅”真是无比震撼! 2013.6.5第五届中国云计算大会在北京国家会议中心召开。软件工程系CSDN带领11、12级学生参加了此次的大会。 此次大会的主题是大数据大带宽。相较与往年的大主题是一个质的超越。在盛大的开幕仪式结束之后,李德毅院士的位置服务课题将大会带入高潮,迎来了到场嘉宾的热…

    云计算 2023年4月12日
    00
  • 外媒:云计算之后,物联网正催化雾计算和边缘计算吗

    我们已经超越云计算了吗?物联网(IoT)正在催生新的方法。 美国2017年智能手机用户预计将达到2.29亿,全世界呢?接近20亿!对这些数字感到惊讶?看一下这些数字背后的原因,才叫人惊讶。 我的一位老熟人是资深的电脑销售人员,总是说:“我刚入行的时候,电脑还是大型机——现在我的口袋里就能装下。”这些迷你的设备拥有强大的计算能力,比最近的超级计算机还要强大。 …

    云计算 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部