したがって、Shrine をファイル アップローダーとして使用する Rails アプリケーションがあります。同じアプリには、写真をクリックして送信できるモバイル クライアントがあります。現在、モバイルは画像をクリックして AWS S3 に送信し、S3 URL を Rails に戻してオブジェクトに関連付けています。この時点で、Shrine がこの S3 URL を受け取ったら、それを に保存しobject.upload_remote_url
ます。その後、Shrine は再び S3 にアップロードし、JSON API 経由で来るすべての画像に対して S3 に 2 つのリクエストを行います。
- 私が知りたいのは、モバイルから Web サーバー、S3 へのファイルのアップロードを処理するためのベスト プラクティスは何ですか? 開発者が使用する最良のテクニックは何ですか?
- JSON としてモバイルからファイルを送信する方法。画像を Base64 文字列に変換して送信できることは知っていますが、他にどのようなオプションを利用できますか?
- S3 プラグインを使用した Shrine Gem にはコピー オプションがあり、間違っていた場合は訂正し、ソース バケット内のイメージをチェックして、それを宛先バケットにコピーします。 http://shrinerb.com/rdoc/classes/Shrine/Storage/S3.html#class-Shrine::Storage::S3-label-Upload+options
以下は私の神社の設定です
require "shrine/storage/s3"
s3_options = {
access_key_id: Rails.application.secrets.aws_access_key_id,
secret_access_key: Rails.application.secrets.aws_secret_access_key,
region: Rails.application.secrets.aws_region,
bucket: Rails.application.secrets.aws_bucket,
}
copy_from = {
copy_source: "#{Rails.application.secrets.aws_bucket}/mobile"
}
Shrine.storages = {
cache: Shrine::Storage::S3.new(prefix: "cache", upload_options: {acl: "public-read"}, **copy_from, **s3_options),
store: Shrine::Storage::S3.new(prefix: "store", upload_options: {acl: "public-read"}, **copy_from, **s3_options)
}
Shrine.plugin :activerecord
Shrine.plugin :direct_upload
Shrine.plugin :restore_cached_data
Shrine.plugin :upload_options
オプション#3で作業しようとしていますが、それを機能させようとして立ち往生しています。誰でもそれを理解するのを手伝ってもらえますか?