首页 > 编程 > PHP > 正文

PHP之OSS

2019-11-08 18:45:47
字体:
来源:转载
供稿:网友

首先php要引入OSS核心类库

授权访问-读授权访问-写里边包含Config.php,OssClient.php,readAuth.php,writeAuth.php,writeConfig.php等配置文件config.php<?php namespace Utils/OSS;/** * * @description 授权访问-读 */final class Config{    const OSS_access_ID = '****************';    const OSS_ACCESS_KEY = '**********************';    //北京节点外网地址:oss-cn-beijing.aliyuncs.com    //北京节点内网地址:oss-cn-beijing-internal.aliyuncs.com//    const OSS_ENDPOINT = 'oss-cn-beijing.aliyuncs.com';//    const OSS_TEST_BUCKET = 'dapeng-video';    const OSS_ENDPOINT = 'oss-cn-hangzhou.aliyuncs.com';    const OSS_TEST_BUCKET = 'zhijin-vod';    const OSS_LIVE_ENDPOINT = 'oss-cn-hangzhou.aliyuncs.com';    const OSS_LIVE_BUCKET = 'zhijin-live';}OssClient.php,readAuth.php,writeAuth.php 里边包含一些关于oss的大量信息,bucket(桶,工具)也就是存储的工具、以及一些拿到getBucketName()方法、avatar上传头像到oss public function avatar($object = null,$file = null)    {        $obj = self::getOssClient();        $obj->uploadFile(self::bucket,$object,$file);        return true;    }讲图片的权限设置成public-read   public function avatarAcl($object = null)    {        $obj = self::getOssClient();        $obj->putObjectAcl(self::bucket,$object,"public-read");        return true;    }writeConfig.php授权访问-写<?php namespace Utils/OSS;/** * Created by PhpStorm. * Date: 16-9-27 * Time: 下午7:23 * @description 授权访问-写 */final class writeConfig{    const OSS_ACCESS_ID     = '***********';    const OSS_ACCESS_KEY    = '**************';//    const OSS_INTERNAL_HOST = 'http://dapeng-video.vpc100-oss-cn-beijing.aliyuncs.com';//    const OSS_HOST          = 'http://dapeng-video.oss-cn-beijing.aliyuncs.com';    const OSS_INTERNAL_HOST = 'http://zhijin-vod.vpc100-oss-cn-hangzhou.aliyuncs.com';    const OSS_HOST          = 'http://zhijin-vod.oss-cn-hangzhou.aliyuncs.com';    const OSS_LIVE_INTERNAL_HOST = 'http://zhijin-live.vpc100-oss-cn-hangzhou.aliyuncs.com';    const OSS_LIVE_HOST          = 'http://zhijin-live.oss-cn-hangzhou.aliyuncs.com';    const OSS_ENDPOINT = 'oss-cn-hangzhou.aliyuncs.com';    const OSS_BUCKET = 'zhijin-vod';}     /**     * 学员上传作业图片     *     *     */    public function onUploadAvatar()    {        // if (!$this->check()) {        //     return CommonConst::getErrorChineseDesc(CommonConst::USER_NOT_LOGIN);        // }        $user  = new User();        $userInfo = $user->getUser();        $teacherHomeworkId = $this->param('id');        if(empty($userInfo->id)){            //2013 未登录            return CommonConst::getErrorChineseDesc(CommonConst::USER_NOT_LOGIN);        }        $file = Input::file('myfile');        // 文件是否上传成功        if ($file->isValid()) {            // 获取文件相关信息            $originalName = $file->getClientOriginalName(); // 文件原名            $ext = $file->getClientOriginalExtension();     // 扩展名            $realPath = $file->getRealPath();   //临时文件的绝对路径            $type = $file->getClientMimeType();     // image/jpeg            // 上传文件            $filename = date('Y-m-d-H-i-s') . '-' . uniqid() . '.' . $ext;            // 使用我们新建的uploads本地存储空间(目录)            $bool = Storage::disk('uploads')->put($filename, file_get_contents($realPath));            $url = storage_path('app/uploads/homework/'.$filename);            $studentHomeworkId = StudentHomeworkModel::where('user_id',$userInfo->id)->where('teacher_homework_id',$teacherHomeworkId)->first();            if(!empty($studentHomeworkId)){                $ossUrl = $this->imgToOss($userInfo->id,$studentHomeworkId->id,$imgPath = $url);                return ['msg' => $ossUrl];            }        }else{            return CommonConst::getErrorChineseDesc(CommonConst::UPLOAD_FILE_ERROR);        }        //return  ['msg'  => $url];    }       public function onGetHomeworkResources(){        $user  = new User();        $userInfo = $user->getUser();        $description = post('description');        $teacherHomeworkId = $this->param('id');        $homeworkResources = StudentHomeworkModel::where('user_id', $userInfo->id)            ->where('teacher_homework_id',$teacherHomeworkId)            ->with('homeworkResources')            ->get();        foreach ($homeworkResources as $key => $homeworkResource) {            $length = 1000-mb_strlen($homeworkResource['description'],'UTF-8');            $homeworkResources[$key]->length = $length;        }        $this->page['homeworkResources'] = $homeworkResources;    }         public function onPublishStudentHomework()    {        $user  = new User();        $userInfo = $user->getUser();        $description = post('description');        $teacherHomeworkId = $this->param('id');        $uploads = post('uploadImage');        $uid = $userInfo->id;        $videoConfig = require_once __DIR__ . "/../../../../config/video.php";        $studentHomeworkId = StudentHomeworkModel::where('user_id',$userInfo->id)                ->where('teacher_homework_id',$teacherHomeworkId)                ->with('homeworkResources')                ->first();        //数据库已经存在的        $imgUrl = StudentHomeworkResources::where('student_homework_id',$studentHomeworkId->id)                ->lists('disk_name','id');        //添加图片资源(编辑进行对比)        if(!empty($uploads)){            $addUploadImages  = array_diff($uploads,$imgUrl);            $deleteImages = array_diff($imgUrl,$uploads);            //添加关联学生作业图片            foreach ($addUploadImages as $key => $upload) {                // $substr = explode("homework/",$upload);                // $substr = PReg_replace('/.*///','',$upload);                $arr=explode("/", $upload);                //获取最后一个/后边的字符                $substr=$arr[count($arr)-1];                // trace_log($upload,$substr);                //服务器上文件路径                $readImgPath = $videoConfig['HOMEWORK_IMAGE_READ_PATH'] . "$uid/$studentHomeworkId->id/$substr";                $image = Storage::disk('uploads')->get($substr);                $fileSize = Storage::disk('uploads')->size($substr);                $imageType = Storage::disk('uploads')->mimeType($substr);                $updateTime = Storage::disk('uploads')->lastModified($substr);                StudentHomeworkResources::insert([                'student_homework_id' => $studentHomeworkId->id,                'disk_name' => $readImgPath,                'file_name' => $substr,                'file_size' => $fileSize,                'content_type' =>$imageType,                'created_at' => date('Y-m-d-H-i-s',$updateTime),                ]);            }            //删除编辑的图片            foreach ($deleteImages as $key => $image) {                $id = StudentHomeworkResources::where('disk_name',$image)->where('student_homework_id',$studentHomeworkId->id)->lists('id');                StudentHomeworkResources::where('id',$id)->delete();            }            $sId = Db::table('dapeng_student_homework')->where('id',$studentHomeworkId->id)                       ->first();            Db::table('dapeng_student_homework')->where('id',$sId->id)->update(['description' => $description,'is_submit' => 1, 'submit_at' => date('Y-m-d-H-i-s',time())]);        }else{            return CommonConst::getErrorChineseDesc(CommonConst::UPLOAD_FILE_FAILE);        }        return CommonConst::getErrorChineseDesc(CommonConst::SUCCESS);    }          /**     * @return oss img url     * @description img to oss    上传到oss上     */    public function imgToOss($uid = null,$homeworkid,$imgPath = null)    {        $videoConfig = require_once __DIR__ . "/../../../../config/video.php";        $obj = new writeAuth();        $file   = $imgPath;        $tempImgName = pathinfo($imgPath);        $baseName = $tempImgName['basename'];        $object = $videoConfig['HOMEWORK_UPLOAD_DIR'] . "$uid/$homeworkid/$baseName";        $readImgPath = $videoConfig['HOMEWORK_IMAGE_READ_PATH'] . "$uid/$homeworkid/$baseName";        //这里如果有错误的话 会直接报错        $obj->avatar($object, $file);        $obj->avatarAcl($object);        return $readImgPath;    }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表