TP5实现阿里云oss上传

  1. 在项目根目录 用composer下载oss-sdk-php
    composer require aliyuncs/oss-sdk-php
    参考:https://help.aliyun.com/document_detail/85580.html

  2. config文件里配置账户信息

return [
        'oss' =>[
            'accessKeyId'=>$accessKeyId,
            'accessKeySecret'=>$accessKeySecret,
            'bucket' => $bucket,
            'endPoint' => $endPoint,
            'domain' => $domain,
            'oss_dir' => [
                'img' => $oss_type.'/'.$oss_qd.'/img/'
            ]
        ]
    ];
  1. 创建Aliyunoss扩展类
<?php
namespace app\lib\aliyun;

use OSS\OssClient;
use think\Config;

class Aliyunoss
{
    public static $oss;
    public function __construct()
    {
        $accessKeyId = Config::get('oss.accessKeyId'); //获取阿里云oss的accessKeyId
        $accessKeySecret = Config::get('oss.accessKeySecret');     //获取阿里云oss的accessKeySecret
        $endpoint = Config::get('oss.endPoint');            //获取阿里云oss的endPoint
        self::$oss = new OssClient($accessKeyId, $accessKeySecret, $endpoint); //实例化OssClient对象
    }

    /**
     * 使用阿里云oss上传文件
     * @param $object  保存到阿里云oss的文件名
     * @param $filepath 文件在本地的绝对路径
     * @return bool   上传是否成功
     */
    public function upload($object, $filepath)
    {
        $bucket = Config::get('oss.bucket');        //获取阿里云oss的bucket
        return self::$oss->uploadFile($bucket, $object, $filepath);
    }


    /**
     * 使用阿里云oss上传字符串
     */
    public function putStr($object, $content)
    {
        $bucket = Config::get('oss.bucket');        //获取阿里云oss的bucket
        return self::$oss->putObject($bucket, $object, $content);
    }

    /**
     * 删除指定文件
     * @param $object 被删除的文件名
     * @return bool  删除是否成功
     */
    public function delete($object)

    {
        $res = false;
        $bucket = Config::get('oss.bucket');        //获取阿里云oss的bucket
        if (self::$oss->deleteObject($bucket, $object)){ //调用deleteObject方法把服务器文件上传到阿里云oss
            $res = true;
        }
        return $res;
    }

    public function test(){
        echo "success";
    }
}

  1. controller方法里调用
public function upload()
{
    $path = Config::get('oss.oss_dir');
    $name = date('YmdHis',time()).'.png';

    //1.获取上传文件信息
    $upfile = $_FILES["png"];

    //2.上传到阿里云oss
    $ali = new Aliyunoss();
    $oss_result = $ali->upload($path.$name,$upfile["tmp_name"]);
    dump($oss_result);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章