Назад | Перейти на главную страницу

Варианты облачного хранилища для клиентских загрузок

Я ищу способ распространять образцы файлов среди клиентов. Требование состоит в том, что (относительно) просто загружать файлы, ссылка может быть отправлена ​​клиенту, который может загрузить файл с помощью браузера, ссылка клиента не может использоваться для поиска других файлов.

На данный момент я делаю это с помощью Dropbox и скриптов, которые создают уникальную папку Dropbox и генерируют ссылку типа http://dl.dropbox.com/u/1234/some_long_random_name/the_sameple_video.mov"вместо того, чтобы управлять паролями

Нет необходимости в шифровании содержимого, файлы обычно имеют размер <1 ГБ, и мы ожидаем всего несколько загрузок в день. Мы не хотим размещать его на нашем веб-сайте (не спрашивайте), и нам нужна служба, которая будет существовать какое-то время, но данные хранятся локально, поэтому избыточность 9-9 секунд не является проблемой

Я дам ответ S3, так как это один из ваших тегов. Amazon S3 позволяет вам устанавливать разрешения для файлов и создавать подписанный URL-адрес со сроком действия. Используя эти две идеи вместе, можно создать систему, которая функционирует как одноразовый URL. Кроме того, S3 имеет два уровня хранения, поэтому, если избыточность не является для вас главным фактором, можно немного сэкономить, используя хранилище с уменьшенной избыточностью. Однако, как и в случае со всеми сервисами AWS, вам придется платить за использованную пропускную способность. S3 также взимает плату за каждый запрос к вашим файлам.

В отличие от типичной реализации S3, где права доступа к файлам являются общедоступными, здесь вы устанавливаете права доступа как частные и подписываете ключом доступа для предоставления доступа.

Если вас не волнует, делятся ли ваши клиенты ссылкой с другими или скачивают несколько раз (пока они не могут получить доступ к другим файлам), тогда реализация довольно проста, вам просто нужно будет создать (достаточно далеко) дату истечения срока действия в будущем с помощью подписанный URL. Так, например, вы загружаете свой файл в S3 (по умолчанию он частный); создать подписанный URL-адрес со сроком действия в одну неделю; и ваш клиент в течение следующей недели сможет получить доступ к файлу по указанному URL столько раз, сколько пожелает. Они не могут получить доступ к другим файлам, так как у них нет подписанных URL-адресов, а все файлы являются частными.

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

Альтернативный сценарий требует частичной реализации на вашем сайте вместо того, чтобы полностью полагаться на S3. Создайте страницу, которая принимает уникальный идентификатор (хранится в базе данных), и отправьте вашему клиенту ссылку на вашу страницу, включая этот идентификатор. Когда ваш клиент обращается к странице, вы генерируете подписанный URL-адрес S3, срок действия которого истекает в ближайшем будущем (30 секунд). (В то же время вы, конечно, можете записать, что идентификатор больше недействителен и что ваш клиент получил доступ к файлу). Запустите загрузку, используя сгенерированный URL. Таким образом, клиенты могут использовать URL-адрес только один раз - они не могут сделать его доступным для других (хотя они всегда могут сделать сам файл доступным для кого-то еще), они могут использовать ссылку, которую вы отправляете им по электронной почте, в любое время (поскольку существует без истечения срока действия), и поскольку вы используете подписанные URL-адреса, они не могут получить доступ к другим файлам (даже если они угадывают пути / имена файлов).

Для чего-то более подходящего для нетехнических пользователей я использую http://www.yousendit.com/.

Он бесплатен для файлов размером до 50 МБ и очень прост в использовании.