php使用新浪云Storage保存上传下载文件,创建bucket、Bucket 操作、Object 上传操作,Object 下载操作,Object 删除操作、Object 复制操作,生成一个外网能够访

文档网址:http://apidoc.sinaapp.com/source-class-sinacloud.sae.Storage.html#110-950
<?php
//新浪云 Storage PHP use
use sinacloud\sae\Storage as Storage;

// 方法一:在新浪云运行环境中时可以不传认证信息,默认会从应用的环境变量中取
$s = new Storage();

//**Bucket 操作**
// 创建一个 Bucket test
$s->putBucket("test");

// 获取 Bucket 列表
print_r($s->listBuckets());

// 获取 Bucket 列表及 Bucket 中 Object 数量和 Bucket 的大小
print_r($s->listBuckets(true));

// 获取 test 这个 Bucket 中的 Object 对象列表,默认返回前 1000 个,如果需要返回大于 1000 个 Object 的列表,可以通过 limit 参数来指定。
print_r($s->getBucket("test"));

// 获取 test 这个 Bucket 中所有以 a/ 为前缀的 Objects 列表
print_r($s->getBucket("test", 'a/'));

// 获取 test 这个 Bucket 中所有以 a/ 为前缀的 Objects 列表,只显示 a/N 这个 Object 之后的列表(不包含 a/N 这个 Object)。
$s->getBucket("test", 'a/', 'a/N');

// Storage 也可以当成一个伪文件系统来使用,比如获取 a/ 目录下的 Object(不显示其下的子目录的具体 Object 名称,只显示目录名)
$s->getBucket("test", 'a/', null, 10000, '/');

// 删除一个空的 Bucket test
$s->deleteBucket("test");

// 获取 Bucket 列表
print_r($s->listBuckets());


/**Object 上传操作**/

// 把 $_FILES 全局变量中的缓存文件上传到 test 这个 Bucket,设置此 Object 名为 1.txt
$s->putObjectFile($_FILES['uploaded']['tmp_name'], "test", "1.txt");

// 把 $_FILES 全局变量中的缓存文件上传到 test 这个 Bucket,设置此 Object 名为 sae/1.txt
$s->putObjectFile($_FILES['uploaded']['tmp_name'], "test", "sae/1.txt");

// 上传一个字符串到 test 这个 Bucket 中,设置此 Object 名为 string.txt,并且设置其 Content-type
$s->putObject("This is string.", "test", "string.txt", array(), array('Content-Type' => 'text/plain'));

 // 上传一个文件句柄(必须是 buffer 或者一个文件,文件会被自动 fclose 掉)到 test 这个 Bucket 中,设置此 Object 名为 file.txt
 $s->putObject(Storage::inputResource(fopen($_FILES['uploaded']['tmp_name'], 'rb'), filesize($_FILES['uploaded']['tmp_name']), "test", "file.txt", Storage::ACL_PUBLIC_READ);
 

/**Object 下载操作**/

// 从 test 这个 Bucket 读取 Object 1.txt,输出为此次请求的详细信息,包括状态码和 1.txt 的内容等
var_dump($s->getObject("test", "1.txt"));

// 从 test 这个 Bucket 读取 Object 1.txt,把 1.txt 的内容保存在 SAE_TMP_PATH 变量指定的 TmpFS 中,savefile.txt 为保存的文件名;
//SAE_TMP_PATH 路径具有写权限,用户可以往这个目录下写文件,
//但文件的生存周期等同于 PHP 请求,也就是当该 PHP 请求完成执行时,所有写入 SAE_TMP_PATH 的文件都会被销毁
$s->getObject("test", "1.txt", SAE_TMP_PATH ."savefile.txt");

// 从 test 这个 Bucket 读取 Object 1.txt,把 1.txt 的内容保存在打开的文件句柄中/$s->getObject("test", "1.txt", fopen(SAE_TMP_PATH."savefile.txt", 'wb'));


/**Object 删除操作**/

// 从 test 这个 Bucket 删除 Object 1.txt
$s->deleteObject("test", "1.txt");


/**Object 复制操作**/

// 把 test 这个 Bucket 的 Object 1.txt 内容复制到 newtest 这个 Bucket 的 Object 1.txt
$s->copyObject("test", "1.txt", "newtest", "1.txt");

// 把 test 这个 Bucket 的 Object 1.txt 内容复制到 newtest 这个 Bucket 的 Object 1.txt,并设置 Object 的浏览器缓存过期时间为 10s 和 Content-Type 为 text/plain
$s->copyObject("test", "1.txt", "newtest", "1.txt", array('expires' => '10s'), array('Content-Type' => 'text/plain'));


/**生成一个外网能够访问的 url**/

// 为私有 Bucket test 中的 Object 1.txt 生成一个能够在外网用 GET 方法临时访问的 URL,次 URL 过期时间为 600s
$s->getTempUrl("test", "1.txt", "GET", 600);

// 为 test 这个 Bucket 中的 Object 1.txt 生成一个能用 CDN 访问的 URL
$s->getCdnUrl("test", "1.txt");


/**调试模式**/

// 开启调试模式,出问题的时候方便定位问题,设置为 true 后遇到错误的时候会抛出异常而不是写一条 warning 信息到日志。
$s->setExceptions(true);

?>

use sinacloud\sae\Storage as Storage

Storage类文档地址: http://apidoc.sinaapp.com/source-class-sinacloud.sae.Storage.html#110-950

猜你喜欢

转载自blog.csdn.net/qq_37968920/article/details/83046444