私はrails-apiプロジェクトを持っています。これはAPIに私のデータへのアクセスを提供します。carrierwaveを使用してrails-apiからファイルを取得するにはどうすればよいですか?
carrierwaveを使用してファイルを保存しました。私のモデルはUser
となり、ファイル属性はimage
となりました。
画像属性にはfile_name
とurl
とその他の情報が含まれています。
ファイルをapiで翻訳するために、宝石carrierwave-base64
を追加しました。
私はアップロードのプロセスを理解しています。クライアントアプリケーションはファイルをbase64 code
にエンコードし、jsonメッセージでバックエンドに送信します。たとえば:
{user: {email: "[email protected]", image: "data:image/jpg;base64,#{base64_image}"}
だから、バックエンドがJSONリクエストを受信したとき、carrierwaveファイルにbase64でコードを解析し、私は理解していない何
ローカルまたはS3にそれを格納する、
Download
ですプロセス:
私は、ユーザ情報を要求すると、私が仮定すると、画像ファイルは、JSONメッセージにbase64 code
として転送されることになるということですし、クライアントアプリがファイル(画像)へbase64 code
をエンコードし、表示します。
実際、私がjsonデータに提供できるのは、ファイルURLであり、base64コードではありません。
api-serverからファイル(画像)を取得したいのは、クライアントアプリケーションがURLでs3に直接アクセスしたくないからです。したがって、クライアントアプリケーションがファイルを取得するたびに、クライアントはapi-serverを要求し、api-serverはファイルを取得してクライアントに転送します。
誰でもダウンロード方法を説明できますか?
もし私が間違った戦略で考えていたのであれば、ユーザーモデルに付随するのではなく、ファイルオブジェクトに応答するための別のAPIエンドポイントが必要です。
乾杯。アマゾンS3に格納されたオブジェクトへのアクセスを制限
を指定した時間に有効期限が切れます、あなたがアップロードして良いことをした、しかし、ダウンロード中にトンを必要とする:S3上の許可アップロード中とexpiring_urlを使う(親指60) o URLをbase64にしないでください。これは私のプロジェクトでやっていることです。これを行う伝統的で良い方法は、クライアントのためにexpiring_url(60、:thumb)をアップロードして使用する際にs3に対する一般の許可を読みます。 –