PHP技术论坛

搜索
查看: 1462|回复: 0
打印 上一主题 下一主题

Thinkphp的OSS存储上传类库案例

[复制链接]

83

主题

88

帖子

411

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
411
跳转到指定楼层
楼主
发表于 2016-3-5 14:13:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

thinkphp版本:3.1.2

oss版本:PHP SDK V2 开发包


将 PHP SDK V2 开发包 放入 /ThinkPHP/Extend下

[size=14.5437px][/url]


在控制器加载调用

  1. date_default_timezone_set('Asia/Shanghai');
  2. Vendor('aliyun.aliyun');
  3. use AliyunOSSOSSClient;
复制代码

[size=14.5437px][url=http://www.phperblog.cn/wp-content/uploads/2015/03/2015-03-17_131436.png]



方法中调用(上传图片)


  1. $client = OSSClient::factory(array(
  2.         'AccessKeyId' => 'xxxxxxxx',
  3.          'AccessKeySecret' => 'xxxxxxxxx',
  4. ));
  5. $client->putObject(array(
  6.         'Bucket' => '自取的名字',
  7.         'Key' => $new_name,
  8.         'Content' => fopen($big_image_info['tmp_name'], 'r'),
  9.         'ContentLength' => filesize($big_image_info['tmp_name']),
  10.         ));
复制代码
创建Bucket

  1.     date_default_timezone_set('Asia/Shanghai');

  2.     require_once './aliyun/aliyun.php';
  3.     use AliyunOSSOSSClient;
  4.     $client = OSSClient::factory(array(
  5.         'AccessKeyId' => '填上自己的Access Key ID',
  6.         'AccessKeySecret' => '填上自己的Access Key Secret',
  7.     ));
  8.    // var_dump($client);exit;

  9.     /*创建Bucket start*/
  10.     //注意:可以会提示 “该Bucket已存在或被其他用户占用” 而导致报错、
  11.     $client->createBucket(array(
  12.             'Bucket' => 'test666zzz',
  13.         ));

  14.     /*创建Bucket end*/
复制代码
上传Object

  1.     date_default_timezone_set('Asia/Shanghai');

  2.     require_once './aliyun/aliyun.php';
  3.     use AliyunOSSOSSClient;
  4.     $client = OSSClient::factory(array(
  5.          'AccessKeyId' => '填上自己的Access Key ID',
  6.         'AccessKeySecret' => '填上自己的Access Key Secret',
  7.     ));
  8.    // var_dump($client);exit;

  9.    

  10.         /*上传Object start*/
  11.          //   $client->putObject(array(
  12.                 //     'Bucket' => 'test666zzz',
  13.                 //     'Key' => 'test',
  14.                 //     'Content' => 'This is my content',
  15.                 // ));
  16.             //注意:Content 为Object的实际内容,它可以为字符串或者是资源类型(resource),当 Content 类型为resource时,你必须指定Object的大小(以字节为单位)。
  17.            $client->putObject(array(
  18.                     'Bucket' => 'test666zzz',
  19.                     'Key' => 'test2',
  20.                     'Content' => fopen('www.phperblog.cn.txt', 'r'),
  21.                     'ContentLength' => filesize('www.phperblog.cn.txt'),
  22.                 ));

  23.         /*上传Object end*/
复制代码


获取object列表

  1.     date_default_timezone_set('Asia/Shanghai');

  2.     require_once './aliyun/aliyun.php';
  3.     use AliyunOSSOSSClient;
  4.     $client = OSSClient::factory(array(
  5.       
  6.          'AccessKeyId' => '填上自己的Access Key ID',
  7.         'AccessKeySecret' => '填上自己的Access Key Secret',
  8.     ));
  9.    // var_dump($client);exit;

  10.         /*获取Object列表 start*/
  11.         $objectListing = $client->listObjects(array(
  12.             'Bucket' => 'test666zzz',
  13.         ));

  14.         foreach ($objectListing->getObjectSummarys() as $objectSummary) {
  15.             echo $objectSummary->getKey();
  16.         }

  17.         /*获取Object列表 end*/
复制代码
下载Object

  1.     date_default_timezone_set('Asia/Shanghai');

  2.     require_once './aliyun/aliyun.php';
  3.     use AliyunOSSOSSClient;
  4.     $client = OSSClient::factory(array(
  5.   
  6.          'AccessKeyId' => '填上自己的Access Key ID',
  7.         'AccessKeySecret' => '填上自己的Access Key Secret',
  8.         
  9.     ));
  10.    // var_dump($client);exit;

  11.         /*下载Object start*/
  12.         // $object = $client->getObject(array(
  13.         //     'Bucket' => 'test666zzz',
  14.         //     'Key' => 'test2',
  15.         // ));

  16.         //echo (string)$object;

  17.         //下面为文件的具体详细信息
  18.         $object = $client->getObject(array(
  19.              'Bucket' => 'test666zzz',
  20.             'Key' => 'test2',
  21.         ));

  22.         echo "Key: " . $object->getKey() . "";
  23.         echo "Update Date: " . $object->getLastModified()->getTimestamp() . "";
  24.         echo "Content: ";
  25.         echo stream_get_contents($object->getObjectContent()); // Print object's content.
  26.         /*下载Object end*/
复制代码

全部代码(控制器)

[backcolor=rgb(188, 188, 188) !important]


  1.         /**
  2.          *
  3.          * @author LiZeQiao <[email]674531003@qq.com[/email]>
  4.          * @version v1.0.0
  5.          * @description
  6.          */
  7.         date_default_timezone_set('Asia/Shanghai');
  8.     Vendor('aliyun.aliyun');
  9.     use AliyunOSSOSSClient;

  10.         
  11.         class TestAction extends CommonAction{

  12.                 public function index(){
  13.         
  14.                 $this->display();

  15.                 }

  16.                 public function do_test(){

  17.                         //.获取要上传文件的信息
  18.                         $big_image_info= $_FILES['big_image'];
  19.                         
  20.                         $typelist=array("image/gif","image/jpeg","image/jpg","image/png"); //定义运行的上传文件类型

  21.                                 
  22.                         /*获取后缀名 start*/
  23.                         $hc_big=explode('.',$big_image_info['name']);

  24.                         $big_aaa=$hc_big['1'];
  25.                         /*获取后缀名 end*/

  26.                                 //.判断文件是否上传错误
  27.                                 if($big_image_info['error'] <= 0){
  28.                                    //.判断文件上传的类型是否合法
  29.                                         if(in_array($big_image_info['type'],$typelist)){
  30.                                             //.上传文件的大小过滤
  31.                                                 if($big_image_info['size']<9000000){
  32.                                                         //.上传文件名处理
  33.                                                         $new_name = time().'.'.$big_aaa;

  34.                                                         //。判断是否是上传的文件,并执行上传
  35.                                                         if(is_uploaded_file($big_image_info['tmp_name'])){

  36.                                                       
  37.                                                         $client = OSSClient::factory(array(
  38.                                                                         'AccessKeyId' => 'xxxxxxx',
  39.                                                                         'AccessKeySecret' => 'xxxxxxxx',
  40.                                                                     ));
  41.                                                                            $client->putObject(array(
  42.                                                                                     'Bucket' => '自取的名称',
  43.                                                                                     'Key' => $new_name,
  44.                                                                                     'Content' => fopen($big_image_info['tmp_name'], 'r'),
  45.                                                                                     'ContentLength' => filesize($big_image_info['tmp_name']),
  46.                                                                                 ));
  47.                                                         }else{
  48.                                                                 $error = "图片文件不是上传的文件";
  49.                                                             return;
  50.                                                         }
  51.                                                 }else{

  52.                                                         $error = "图片太大";

  53.                                                         return;
  54.                                                 }
  55.                                         }else{
  56.                                                 $error = "图片文件类型错误";
  57.                                                         
  58.                                                 return;
  59.                                         }

  60.                                 }else{
  61.                                         $error = "图片文件上传错误";
  62.                                                 
  63.                                         return;
  64.                                 }                        

  65.                         $new_name='http://'.'自取的名称'.'.oss-cn-hangzhou.aliyuncs.com/'.$new_name;

  66.                         var_dump($new_name);

  67.                 }

  68.         }
复制代码




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|PHP  

GMT+8, 2024-5-18 18:39 , Processed in 0.061865 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表