使用PHP

时间:2015-12-16 06:11:37

标签: php upload akamai

我开始使用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。我也提到了其他几个,但无法正确上传视频/图像文件。我上面写的代码工作得很好。现在我需要上传视频文件而不是将内容写入文本文件。

1 个答案:

答案 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);