关于thinkphp集成OSS总结(本地上传)

来源:互联网 发布:网络唤醒数据包 编辑:程序博客网 时间:2024/06/18 16:21

1.安装 :demo下载路径:https://help.aliyun.com/document_detail/32099.html。

2.配置: 在Application/Common/Conf/config.php内进行相关参数配置。

'ALIOSS_CONFIG'          => array(    'KEY_ID'             => '', // 阿里云oss key_id    'KEY_SECRET'         => '', // 阿里云oss key_secret    'END_POINT'          => '', // 阿里云oss endpoint    'BUCKET'             => ''  // bucken 名称)

3. 建立ImgUpController.class.php 控制器上传文件。

 

    /** 文件上传     * @param $file         * @return string        */    public function upload($file)    {        $_FILES = $file;        $upload = new \Think\Upload();// 实例化上传类        // $upload->maxSize   =     3145728 ;// 设置附件上传大小        $upload->exts = array('jpg', 'gif', 'png', 'jpeg',"mp4","wmv");// 设置附件上传类型        $upload->rootPath = './Uploads/'; // 设置附件上传根目录        $upload->savePath = ''; // 设置附件上传(子)目录        // 上传文件        $info = $upload->upload();        if (!$info) {// 上传错误提示错误信息            $m = $upload->getError();            $msg = array('code' => '0', 'info' => $m);        } else {// 上传成功            $url = '';            foreach ($info as $key => $value) {                $url2 = $upload->rootPath;                $url2 .= $value['savepath'];                $url2 .= $value['savename'];                $url2 .= ',';                $url .= substr($url2, 1);            }            $url = rtrim($url, ',');            return $url;        }    }



4.建立OssUpController.class.php控制器. 注意:头部需引入:

use OSS\OssClient;use OSS\Core\OssException;

    /**     * OSS 上传图片     * @param    $info       本地图片路径  eg:   /Uploads/2017-09-20/59c1e7418e8e4.jpg     * @return   string      完整访问路径     */    public function OssUp($info){      if(!$info) {// 上传错误提示错误信息            return -2;//处理上传错误信息        }else {// 上传成功            vendor('Alioss.autoload');            $accessKeyId = C('ALIOSS_CONFIG.KEY_ID');            $accessKeySecret = C('ALIOSS_CONFIG.KEY_SECRET');            $endpoint = C('ALIOSS_CONFIG.END_POINT');            $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);            $bucket = C('ALIOSS_CONFIG.BUCKET');            $object = trim($info,'/');//想要保存文件的名称            $file = '.'.$info;//文件路径,必须是本地的。            try {                $getOssInfo = $ossClient->uploadFile($bucket, $object, $file);                unlink($file);                return $this->get_url($info);//上传成功,自己编码            } catch (OssException $e) {                return $e->getMessage();//上传失败,自己编码            }        }    }    /**     * 获取完整网络连接     * @param  string $path 文件路径     * @return string       http连接     */    function get_url($path){        // 如果是空;返回空        if (empty($path)) {            return '';        }        // 如果已经有http直接返回        if (strpos($path, 'http://')!==false) {            return $path;        }        // 获取bucket        $bucket= C('ALIOSS_CONFIG.BUCKET');        return 'http://'.$bucket.'.'.C('ALIOSS_CONFIG.END_POINT').$path;    }

5.先调用步骤3获取文件路径,再调用 步骤4内的 OssUp 方法即可。(备注:步参数为本地文件路径)。



原创粉丝点击