上传图片到阿里云OSS和获取上传图片的url的详解 !

OSS对象存储

<?php
/**
 * +------------------------------------------------------------------------------
 * UserController
 * +------------------------------------------------------------------------------
 * time 2018/12/25
 * @description uploadOperController
 * +------------------------------------------------------------------------------
 */

namespace Home\Controller;
class UploadOperController extends CommonController
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * OSS直接上传
     * $path 上传文件的绝对路径$path="E:\phpstudy\phpstudy\WWW/newShop\pc_api_lishe_cn\product/1.jpg"
     * $type 规定好eg:goodsImage temp(默认临时目录)
     */
    public function aiuploadPathByOss_in($path="",$type="temp"){
        $resultArray = array(
            "errcode" => 0,
            "msg" => "",
        );
        $allowTypes = ["idCardImage","goodsImage","temp"];
        if(!in_array($type, $allowTypes)){
            $resultArray["errcode"] = 1;
            $resultArray['msg'] = '类型不符合规范';
            return  $resultArray;
        }
        vendor('OSS.autoload');
        // 阿里云主账号AccessKey
        $accessKeyId = "";
        $accessKeySecret = "";
        // Endpoint以杭州为例,其它Region请按实际情况填写。
        $endpoint = "";
        // 存储空间名称
        $bucket= "lishe-shop-images";

        if(!$path){
            $resultArray["errcode"] = 1;
            $resultArray['msg'] = '文件路径不能为空!';
            return  $resultArray;
        }
        // 文件名称
        $ext = pathinfo($path)['basename'];
        $time = time();
        $subType=date('Y-m-d',$time)."/".$time."_";
        $object = $type."/".$subType.$ext;
        $content = $path;
        $data = array();
        // echo __DIR__;die;
        try {
             $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
             $result = $ossClient->uploadFile($bucket,$object,$content);
             $data['img'] = $result['info']['url'];
            
        } catch (OssException $e) {
            // print $e->getMessage();
            $this->makeLog('uploadByOss', 'ErrorMessage:' . $e->getMessage()  . "\r\n");
        }
        // return $data['img'];

        $resultArray['msg'] = $data['img'];
        return  $resultArray;
    }

    /**
     * OSS获取到文件再次上传
     * $type 规定好eg:goodsImage temp(默认临时目录)
     * 此接口不支持JSONP,此接口仅支持CORS
     */
    public function aiuploadFileByOss($type="temp"){
        header('Access-Control-Allow-Origin: *');
        $ret=array(
            'result'=>100,
            'errcode'=>0,
            'msg'=>"",
        );
        $imgArr = $_FILES;
        if(!$imgArr){
            $ret['errcode']=1;
            $ret['msg']='请上传图片!';
            $this->ajaxReturn($ret, "JSON");
            exit();
        }
        $time = time();
        $subType=date('Y-m-d',$time)."/";
        $uploadDir = dirname(dirname(dirname(__FILE__)))."/Runtime/Cache/uploadImg/";
        $this->mkdirs($uploadDir);
        $imgArray = array();
         foreach ($imgArr as $key => $value) {
                move_uploaded_file($value['tmp_name'],$uploadDir.$time.'_'.$value['name']); 
                $movedImg = $uploadDir.$time.'_'.$value['name'];
                $response = $this->aiuploadPathByOss_in($movedImg ,$type);
                if($response["errcode"] != 0 ){
                    $ret['errcode']=1;
                    $ret['msg']=$response["msg"];
                    $this->ajaxReturn($ret, "JSON");
                    exit();
                };
                $imgArray[] = $response["msg"];
                
         }
         $ret=array(
            'result'=>100,
            'errcode'=>0,
            'msg'=>'上传图片成功',
            'data'=>array('imgurls'=> $imgArray),
        );
        $this->ajaxReturn($ret,"JSON");
        exit();
    }

    private function mkdirs($dir, $mode = 0777)
    {
        if (is_dir($dir) || @mkdir($dir, $mode)) return TRUE;
        if (!mkdirs(dirname($dir), $mode)) return FALSE;
        return @mkdir($dir, $mode);
    }

}
--------------------- 
作者:一亩地 
来源:CSDN 
原文:https://blog.csdn.net/Aaroun/article/details/85256263 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值