Загрузите видеофайл в хранилище Akamai с помощью переполнения стека

Я начал работать над загрузкой файла в netstorage akamai с помощью PHP и ссылался на несколько API в GitHub. Я не могу загрузить видеофайл. Хотя я могу создавать и писать содержимое в них.

<?php
require 'Akamai.php';
$service = new Akamai_Netstorage_Service('******.akamaihd.net');
$service->authorize('key','keyname','version');
$service->upload('/dir-name/test/test.txt','sample text');
?>

Я сослался на это API. Я также сослался на несколько других, но не смог найти правильный способ загрузить файл видео / изображения. Код, который я написал выше, работает отлично. Теперь мне нужно загрузить видео файл вместо записи содержимого в текстовый файл.

0

Решение

Существует более современная библиотека для NetStorage Akamai, которая построена как плагин для FlySystem, Akamai открыть / NetStorage.

После того, как он установлен, вам нужно настроить аутентификацию и HTTP-клиент (на основе пропивать):

$signer = new \Akamai\NetStorage\Authentication();
$signer->setKey($key, $keyName);

$handler = new \Akamai\NetStorage\Handler\Authentication();
$handler->setSigner($signer);

$stack = \GuzzleHttp\HandlerStack::create();
$stack->push($handler, 'netstorage-handler');

$client = new \Akamai\Open\EdgeGrid\Client([
'base_uri' => $host,
'handler' => $stack
]);

$adapter = new \Akamai\NetStorage\FileStoreAdapter($client, $cpCode);

И тогда вы можете создать объект файловой системы и загрузить файл:

$fs = new \League\Flysystem\Filesystem($adapter);

// Upload a file:
// cpCode, action, content signature, and request signature is added transparently
// Additionally, all required sub-directories are created transparently
$fs->write('/path/to/write/file/to', $fileContents);

Однако, поскольку вы загружаете видеофайл, я бы предложил вам использовать поток, а не читать содержимое в память. Для этого вы используете writeStream() вместо:

$fs = new \League\Flysystem\Filesystem($adapter);
$stream = fopen('/path/to/local/file', 'r+');
$fs->writeStream('/path/to/write/file/to', $stream);
0

Другие решения

Других решений пока нет …