2016-11-24 3 views
1

У меня есть проект rails-api, который предоставляет api для доступа к моим данным.Как получить файл из rails-api, который использует wavewave?

Я использую несущую волну для хранения моего файла, мою модель под названием 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 процесс:

Когда я прошу информацию о пользователе, что я предполагаю, что файл изображения будет передан в качестве base64 code в сообщении JSon, а затем клиентское приложение будет кодировать base64 code в файл (изображение), и затем отобразите.

Но на самом деле, что я могу предоставить для json-данных, это URL-адрес файла, а не код base64.

Причина, по которой я хочу получить файл (изображение) с api-сервера, заключается в том, что я не хочу, чтобы клиентское приложение напрямую обращалось к s3 по URL-адресу. Поэтому каждый раз, когда клиентское приложение хочет получить файл, он будет запрашивать api-сервер, а api-server получит файл и передаст его клиенту.

Кто-нибудь может объяснить, как сделать загрузку?

Или, если мне посчитали неправильную стратегию, мне нужна еще одна точка api для ответа файлового объекта, а не просто сопровождать пользовательскую модель.

Cheers.

+0

ты хорошая вещь с загрузкой, но при загрузке вам нужно т o отправить URL-адрес без base64. Это то, что я делаю в своем проекте, и его традиционный и хороший способ сделать это - это открыть общедоступное разрешение на s3 при загрузке и использовании expying_url (60,: thumb) для ваших клиентов –

ответ

0

Ограничение доступа к объектам, хранящимся на Amazon S3

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

ты хорошая вещь с загрузкой, но при скачивании вам нужно, чтобы отправить URL-адрес не base64 и его традиционный Также для securrity цели вы можете поставить общественное чтение разрешение на s3 при загрузке и использовании expiring_url (60,: большой палец) для ваших клиентов

в этом URL получить истек во времени, который вы указали

Смежные вопросы