文件上传和云存储的代码示例

275 阅读1分钟

多年来,AWS S3 一直是一项可靠的服务,长期以来,它是唯一的选择。但是,在过去几年中,出现了更多兼容的S3 API的云存储选项。这些服务有时可以提供更好的定价和速度。

# Terminal
bundle add aws-sdk-s3
rails g scaffold pictures name
rails active_storage:install
yarn add @rails/activestorage
# app/javascript/application.js
import * as ActiveStorage from "@rails/activestorage"
ActiveStorage.start()
# models/picture.rb
class Picture < ApplicationRecord
  has_one_attached :image
end
# views/pictures/_form.html.erb

# views/pictures/_picture.html.erb
<%= image_tag url_for(picture.image) if picture.image.attached? %>
# pictures_controller.rb
def picture_params
  params.require(:picture).permit(:name, :image)
end
# config/environments/production.rb
config.active_storage.service = :cloud
# config/storage.yml

# Backblaze B2 CLI tool
https://www.backblaze.com/b2/docs/quick_command_line.html

chmod +x b2-darwin
./b2-darwin authorize-account
./b2-darwin update-bucket --corsRules '[
    {
        "corsRuleName": "downloadFromAnyOriginWithUpload",
        "allowedOrigins": [
            "*"
        ],
        "allowedHeaders": [
            "*"
        ],
        "allowedOperations": [
            "s3_put"
        ],
        "maxAgeSeconds": 3600
    }
]' exampledr allPublic