PHP SDK: S3: сохранение файлов
Выберите настроенное подключение через $ctx->storage('media'). Код подключения и разрешения проверяются системой. На внешнем S3 учитывается время передачи/обработки, а не объём как внутреннее хранение платформы.
Методы
putFromUrl
putFromUrl(string $url, ?string $key = null, ?string $mime = null): StoredFile
Скачать файл с сайта и загрузить в выбранное S3-подключение.
$file = $ctx->storage('media')->putFromUrl($ctx->param('image_url'), 'products/A-1.jpg');
$ctx->emit(['sku' => 'A-1', 'image_key' => $file->key], 'A-1');
Результат и особенности. Возвращает StoredFile. key и mime необязательны. Без key имя строится автоматически. В пробном прогоне загрузка не выполняется, dryRun=true.
put
put(string $key, string $content, string $mime = 'text/plain'): StoredFile
Записать небольшой текстовый файл: отчёт, JSON или CSV.
$content = json_encode(['count' => 12], JSON_UNESCAPED_UNICODE);
$file = $ctx->storage('media')->put('reports/count.json', $content, 'application/json');
Результат и особенности. Возвращает StoredFile. Предел текста 1 МБ. Для больших файлов и изображений используйте putFromUrl.
exists
exists(string $key): bool
Проверить наличие объекта по ключу.
$exists = $ctx->storage('media')->exists('products/A-1.jpg');
Результат и особенности. Возвращает bool. Проверка существования не гарантирует, что объект не изменится между запросами.
url
url(string $key, int $ttlSeconds = 3600): string
Получить временную подписанную ссылку на объект.
$downloadUrl = $ctx->storage('media')->url('products/A-1.jpg', 3600);
Результат и особенности. Возвращает строку. ttlSeconds задаётся в секундах, по умолчанию час. Не используйте временный URL как постоянный идентификатор; храните key.