美文网首页
Laravel(5.7) 运用 OSS

Laravel(5.7) 运用 OSS

作者: zmindthegap | 来源:发表于2019-04-22 16:40 被阅读0次

要求

     ` PHP >= 7.0`

安装

           ` composer require "johnlui/aliyun-oss `

配置

    `组件下载完成之后,需要在 app/config/oss.php 中写入六项配置(个人推荐)`
image

可在.env文件中添加适量配置(根据实际数据填写)

image

写入配置后注意使用 php artisan config:clear 清除配置缓存


构建 Services 文件

后台需要一个 Service 文件, 在 app/Service 下新建一个 OSS.php 文件

image

附上代码:

<?php

namespace App\Services;

/**

* @Author: zhanhaisheng

* @String: OSS文件存储

*/

use JohnLui\AliyunOSS;

use Exception;

use DateTime;

class OSS {

  /* 城市名称:

  * 

  *  经典网络下可选:杭州、上海、青岛、北京、张家口、深圳、香港、硅谷、弗吉尼亚、新加坡、悉尼、日本、法兰克福、迪拜

  *  VPC 网络下可选:杭州、上海、青岛、北京、张家口、深圳、硅谷、弗吉尼亚、新加坡、悉尼、日本、法兰克福、迪拜

  */   

  private $ossClient;

  /**

  * 私有初始化 API,非 API,不用关注

  * @param boolean 是否使用内网

  */

  public function __construct($isInternal = false)

  {

    if (config('app.NetworkType') == 'VPC' && !$isInternal) {

      throw new Exception("VPC 网络下不提供外网上传、下载等功能");

    }

    $this->ossClient = AliyunOSS::boot(

      config('app.City'),

      config('app.NetworkType'),

      $isInternal,

      config('app.AccessKeyId'),

      config('app.AccessKeySecret')

    );

  }

  /**

  * 使用外网上传文件

  * @param  string 上传之后的 OSS object 名称

  * @param  string 上传文件路径

  * @return boolean 上传是否成功

  */

  public static function upload($ossKey, $filePath, $options = [])

  {

    $oss = new OSS(config('app.IsInternal'));

    $oss->ossClient->setBucket(config('app.BucketName'));

    return $oss->ossClient->uploadFile($ossKey, $filePath, $options);

  }

  /**

  * 使用外网直接上传变量内容

  * @param  string bucket名称

  * @param  string 上传之后的 OSS object 名称

  * @param  string 上传的变量

  * @return boolean 上传是否成功

  */

  public static function uploadContent($ossKey, $content, $options = [])

  {

    $oss = new OSS(config('app.IsInternal'));

    $oss->ossClient->setBucket(config('app.BucketName'));

    return $oss->ossClient->uploadContent($ossKey, $content, $options);

  }

  /**

  * 使用外网删除文件

  * @param  string bucket名称

  * @param  string 目标 OSS object 名称

  * @return boolean 删除是否成功

  */

  public static function deleteObject($ossKey)

  {

    $oss = new OSS(config('app.IsInternal'));

    $oss->ossClient->setBucket(config('app.BucketName'));

    return $oss->ossClient->deleteObject(config('app.BucketName'), $ossKey);

  }

    /**

    * 复制存储在阿里云OSS中的Object

    *

    * @param string $sourceBuckt 复制的源Bucket

    * @param string $sourceKey - 复制的的源Object的Key

    * @param string $destBucket - 复制的目的Bucket

    * @param string $destKey - 复制的目的Object的Key

    * @return Models\CopyObjectResult

    */

    public function copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey)

    {

        $oss = new OSS(config('app.IsInternal')); // 上传文件使用内网,免流量费

        return $oss->ossClient->copyObject($sourceBuckt, $sourceKey, $destBucket, $destKey);

    }

    /**

    * 移动存储在阿里云OSS中的Object

    *

    * @param string $sourceBuckt 复制的源Bucket

    * @param string $sourceKey - 复制的的源Object的Key

    * @param string $destBucket - 复制的目的Bucket

    * @param string $destKey - 复制的目的Object的Key

    * @return Models\CopyObjectResult

    */

    public function moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey)

    {

        $oss = new OSS(config('app.IsInternal')); // 上传文件使用内网,免流量费

        return $oss->ossClient->moveObject($sourceBuckt, $sourceKey, $destBucket, $destKey);

    }

    public static function getUrl($ossKey)

    {

        $oss = new OSS();

        $oss->ossClient->setBucket(config('app.BucketName'));

        return $oss->ossClient->getUrl($ossKey, new \DateTime("+1 day"));

    }

    public static function createBucket($bucketName)

    {

        $oss = new OSS();

        return $oss->ossClient->createBucket($bucketName);

    }

    public static function getAllObjectKey($bucketName)

    {

        $oss = new OSS();

        return $oss->ossClient->getAllObjectKey($bucketName);

    }

    /**

    * 获取指定Object的元信息

    *

    * @param  string $bucketName 源Bucket名称

    * @param  string $key 存储的key(文件路径和文件名)

    * @return object 元信息

    */

    public static function getObjectMeta($bucketName, $osskey)

    {

        $oss = new OSS();

        return $oss->ossClient->getObjectMeta($bucketName, $osskey);

    }

}

?>


以上操作完毕就可以完美使用Aliyun OSS文件系统了

注意:先引入后使用,咳咳

原作者=====地址奉上johnlui AliyunOSS

相关文章

网友评论

      本文标题:Laravel(5.7) 运用 OSS

      本文链接:https://www.haomeiwen.com/subject/oacugqtx.html