Загрузить объект
Загружать объекты в контейнер можно тремя способами:
- простая загрузка доступна через панель управления и API. Ее можно использовать для файлов размером до 100 МБ;
- сегментированная загрузка возможна только через Swift API и S3 API. Ее рекомендуется использовать для файлов размером более 100 МБ;
- загрузка через HTML-форму возможна только через S3 API. Ее можно использовать для файлов размером до 5 ГБ.
Загрузить в контейнер можно любой объем файлов, если не установлены лимиты контейнера.
Простая загрузка
Если названия папок в загружаемом архиве и в хранилище совпадают, папки будут объединены. Если совпадают имена файлов, файлы будут перезаписаны.
- В панели управления перейдите в раздел Объектное хранилище ⟶ Хранилище.
- Откройте вкладку Контейнеры.
- Откройте страницу контейнера ⟶ вкладка Объекты.
- Выберите файлы для загрузки или перенесите их в область загрузки. Если вы загружаете архив 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>
) вместо объекта загружается манифест — файл с описанием сегментов и пути до них. При скачивании файла-манифеста сегменты автоматически подставляются в объект.
Разрешить сегментированную загрузку
- В панели управления перейдите в раздел Объектное хранилище ⟶ Пользователи.
- Откройте карточку пользователя, которому хотите разрешить сегментированную загрузку.
- Выберите основной контейнер (
<container>
). - Выберите право доступа Чтение и запись.
Отобразить контейнеры с сегментами
По умолчанию контейнеры с сегментами не отображаются в списке контейнеров в панели управления.
- В панели управления перейдите в раздел Объектное хранилище ⟶ Хранилище.
- Откройте вкладку Настройки хранилища.
- Отметьте чекбокс Показывать служебные контейнеры с сегментами объектов.
- Нажмите Сохранить.
Удалить объект с сегментами
При хранении объекта нельзя удалять его сегменты в служебном контейнере — это приведет к поломке всего файла.
Чтобы удалить объект с сегментами, в основном контейнере удалите файл-манифест, а в служебном контейнере — его сегменты.
Загрузка через HTML-форму
При использовании Объектного хранилища для хранения файлов пользователей вашего сайта можно реализовать загрузку файлов напрямую из браузера пользователя в хранилище. Файлы не будут проходить через сервер сайта, что сократит время загрузки, расход трафика и нагрузку на сервер.
Для этого нужно разработать и разместить на сайте генератор, который будет создавать HTML-формы по заданному шаблону. В генераторе HTML-форм можно задать ограничения на загрузку (количество файлов, их размер и т. д.).
Для загрузки через HTML-форму необходимо использовать S3 API. Подробнее о разработке HTML-формы в документации API.
Тарификация
При любом способе загрузки тарифицируется объем хранения, количество запросов к API и исходящий трафик.
- при простой загрузке тарифицируется объем хранения целого объекта;
- при сегментированной загрузке объект хранится в сегментах, поэтому фактически тарифицируются только сегменты. Файл манифеста занимает минимальный объем (несколько КБ), поэтому стоимость хранения объекта с сегментами почти не отличается от стоимости хранения целого объекта;
- при загрузке через HTML-форму стоимость не отличается от стоимости простой загрузки.