我开始使用PHP将文件上传到akamai netstorage,并在GitHub中引用了一些API。我无法上传视频文件。虽然我可以在其中创建和写入内容。
<?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 :(得分:0)
Akamai的NetStorage有一个更现代的库,它是FlySystem的插件akamai-open/netstorage。
安装完成后,需要设置身份验证和HTTP客户端(基于Guzzle):
$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);