Загрузить объект

Загружать объекты в контейнер можно тремя способами:

Загрузить в контейнер можно любой объем файлов, если не установлены лимиты контейнера.

Не рекомендуется использовать кириллицу в именах объектов.

Простая загрузка

Если названия папок в загружаемом архиве и в хранилище совпадают, папки будут объединены. Если совпадают имена файлов, файлы будут перезаписаны.

  1. В панели управления перейдите в раздел Объектное хранилищеХранилище.
  2. Откройте вкладку Контейнеры.
  3. Откройте страницу контейнера ⟶ вкладка Объекты.
  4. Выберите файлы для загрузки или перенесите их в область загрузки. Если вы загружаете архив tar, tar.gz или tar.bz2, укажите, нужно ли распаковывать архив при загрузке в контейнер. При распаковке архив в контейнере не сохраняется.

Сегментированная загрузка

Сегментированная загрузка — это загрузка объектов по частям (сегментам), которую рекомендуется использовать для файлов размером более 100 МБ. Сегментированная загрузка возможна только через Swift API (технология SLO/DLO) и S3 API (технология Multipart Upload).

С ее помощью можно:

  • загружать большие объекты сегментами меньшего размера;
  • увеличить скорость загрузки объектов (с помощью параллельных запросов);
  • при сбоях в соединении не загружать объект заново, а повторять передачу только нужных сегментов.

Чтобы использовать сегментированную загрузку, разрешите ее пользователям хранилища.

При загрузке объектов через API учитывайте Квоты и лимиты хранилища.

Загрузить объект

Загрузить объект через сегментированную загрузку можно через методы S3 API или методы Swift API. Процесс сегментированной загрузки зависит от используемого API и утилиты. Некоторые утилиты API (Rclone, Cyberduck), которые поддерживают сегментированную загрузку, автоматически включают ее для файлов больше определенного размера. В остальных случаях ее нужно инициализировать вручную.

При сегментированной загрузке объекта в основной контейнер (<container>) создается служебный контейнер, в который будут помещаться сегменты объектов:

  • при загрузке объектов через S3 API контейнер создается автоматически и называется <container>_s3multipartuploads
  • при загрузке объектов через Swift API контейнер создается с помощью утилиты API или SDK и называется <container>_segments или <container>.file-segments

В основной контейнер (<container>) вместо объекта загружается манифест — файл с описанием сегментов и пути до них. При скачивании файла-манифеста сегменты автоматически подставляются в объект.

Разрешить сегментированную загрузку

  1. В панели управления перейдите в раздел Объектное хранилищеПользователи.
  2. Откройте карточку пользователя, которому хотите разрешить сегментированную загрузку.
  3. Выберите основной контейнер (<container>).
  4. Выберите право доступа Чтение и запись.

Отобразить контейнеры с сегментами

По умолчанию контейнеры с сегментами не отображаются в списке контейнеров в панели управления.

  1. В панели управления перейдите в раздел Объектное хранилищеХранилище.
  2. Откройте вкладку Настройки хранилища.
  3. Отметьте чекбокс Показывать служебные контейнеры с сегментами объектов.
  4. Нажмите Сохранить.

Удалить объект с сегментами

При хранении объекта нельзя удалять его сегменты в служебном контейнере — это приведет к поломке всего файла.

Чтобы удалить объект с сегментами, в основном контейнере удалите файл-манифест, а в служебном контейнере — его сегменты.

Загрузка через HTML-форму

При использовании Объектного хранилища для хранения файлов пользователей вашего сайта можно реализовать загрузку файлов напрямую из браузера пользователя в хранилище. Файлы не будут проходить через сервер сайта, что сократит время загрузки, расход трафика и нагрузку на сервер.

Для этого нужно разработать и разместить на сайте генератор, который будет создавать HTML-формы по заданному шаблону. В генераторе HTML-форм можно задать ограничения на загрузку (количество файлов, их размер и т. д.).

Для загрузки через HTML-форму необходимо использовать S3 API. Подробнее о разработке HTML-формы в документации API.

Тарификация

При любом способе загрузки тарифицируется объем хранения, количество запросов к API и исходящий трафик.

  • при простой загрузке тарифицируется объем хранения целого объекта;
  • при сегментированной загрузке объект хранится в сегментах, поэтому фактически тарифицируются только сегменты. Файл манифеста занимает минимальный объем (несколько КБ), поэтому стоимость хранения объекта с сегментами почти не отличается от стоимости хранения целого объекта;
  • при загрузке через HTML-форму стоимость не отличается от стоимости простой загрузки.