2016-11-24 33 views
1

私はrails-apiプロジェクトを持っています。これはAPIに私のデータへのアクセスを提供します。carrierwaveを使用してrails-apiからファイルを取得するにはどうすればよいですか?

carrierwaveを使用してファイルを保存しました。私のモデルはUserとなり、ファイル属性はimageとなりました。

画像属性にはfile_nameurlとその他の情報が含まれています。

ファイルを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に格納されたオブジェクトへのアクセスを制限

+0

を指定した時間に有効期限が切れます、あなたがアップロードして良いことをした、しかし、ダウンロード中にトンを必要とする:S3上の許可アップロード中とexpiring_urlを使う(親指60) o URLをbase64にしないでください。これは私のプロジェクトでやっていることです。これを行う伝統的で良い方法は、クライアントのためにexpiring_url(60、:thumb)をアップロードして使用する際にs3に対する一般の許可を読みます。 –

答えて

0

https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3 

あなたがアップロードして良いことをした、しかし、ダウンロードしながら、あなたが公共の読み取りを置くことができるURLにsecurrityの目的のために何をbase64。また、伝統的な を送信しないする必要がありますあなたの顧客のために、このURLで

はあなたが

関連する問題