zoukankan      html  css  js  c++  java
  • 文件流格式与base64格式图片上传到七牛

    base64格式的上传七牛有提供接口,但一般官方提供的SDK默认的是空间是华东,我的是华南的所以就报错了,就换成了下面的方法

    文件流格式:

    public function upload_img()
    {
    if (request()->isPost()) {
    $file = request()->file('img');
    $info = $file->validate(['size' => 2097152, 'ext' => 'jpg,png,gif']);
    if (!$info) {
    return return_json(0, $info->getError());
    }
    $result = upload($file);
    if (!$result['status']) {
    return return_json(0, $result['msg']);
    } else {
    if ($result) {
    $data = [
    'path' => config('DOMAIN') . '/' . $result['data'],
    'pic_name' => $result['data'],
    ];
    return return_json(1, '上传成功', $data);
    } else {
    return return_json(0, '上传失败');
    }
    }
    } else {
    return return_json(-1);
    }
    }


    把upload文件放到common中
    //七牛上传图片
    function upload($file)
    {
    // 要上传图片的本地路径
    $filePath = $file->getRealPath();
    $ext = pathinfo($file->getInfo('name'), PATHINFO_EXTENSION); //后缀
    // if($ext!='png' && $ext!='jpg' && $ext!='jpeg' && $ext!='gif')
    // return ["status" => 0, "msg" => '格式有误', "data" => ""];
    //获取当前控制器名称
    // $controllerName=$this->getContro();
    $controllerName = 'editinfo';
    // 上传到七牛后保存的文件名
    $key = substr(md5($file->getRealPath()), 0, 5) . date('YmdHis') . rand(0, 9999) . '.' . $ext;
    // require_once APP_PATH . '/../vendor/qiniu/autoload.php';
    // 需要填写你的 Access Key Secret Key
    $accessKey = config('ACCESSKEY');
    $secretKey = config('SECRETKEY');
    // 构建鉴权对象
    $auth = new Auth($accessKey, $secretKey);
    // 要上传的空间
    $bucket = config('BUCKET');
    $domain = config('DOMAIN');
    $token = $auth->uploadToken($bucket);
    // 初始化 UploadManager 对象并进行文件的上传
    $uploadMgr = new UploadManager();
    // 调用 UploadManager putFile 方法进行文件的上传
    list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
    if ($err !== NULL) {
    // return result_set(0,$err);
    return ["status" => 0, "msg" => $err, "data" => ""];
    } else {
    // //返回图片的完整URL
    // $thumb = 'http://'.$domain.'/'.$ret['key'];
    // $rel = db('member')->where('uid',$uid)->update(array('thumb'=>$thumb));
    // if($rel){
    // return result_set(1,'修改成功',$thumb);
    // }else{
    // return result_set(0,'修改失败');
    // }

    return ['status' => 1, 'data' => $ret['key']];
    }
     

    base64格式:

    public function base64_upload()
    {
    if (!request()->isPost()) {
    return return_json(-1);
    }
    $base64 = request()->post('img');

    $file = $this->base64_image_content($base64,"");
    $guid = time().rand(1111,9999);
    $key = md5($guid) . 'jpg';
    $result = setQiniuUplaod($file,$key);
    if (!$result['status']) {
    return return_json(0, $result['msg']);
    } else {
    if ($result) {
    $data = [
    'path' => config('DOMAIN'). $result['data'],
    'pic_name' => $result['data'],
    ];
    return return_json(1, '上传成功', $data);
    } else {
    return return_json(0, '上传失败');
    }
    }


    }



    /**
    * [Base64图片转换为本地图片并保存]
    * @E-mial wuliqiang_aa@163.com
    * @TIME 2017-04-07
    * @WEB http://blog.iinu.com.cn
    * @param [Base64] $base64_image_content [要保存的Base64]
    * @param [目录] $path [要保存的路径]
    */
    function base64_image_content($base64_image_content,$path)
    {
    //匹配出图片的格式
    if (preg_match('/^(data:s*image/(w+);base64,)/', $base64_image_content, $result)) {

    $new_file = date('Ymdhis', time());
    $dir = './static/images/';
    is_dir($dir) OR mkdir($dir, 0777, true);

    //$new_file = $new_file . time() . ".{$type}";
    if (file_put_contents($dir.$new_file, base64_decode(str_replace($result[1], '', $base64_image_content)))) {
    return $dir.$new_file;
    } else {
    return false;
    }
    } else {
    return false;
    }
    }


    setQiniuUplaod文件放到common中
    function setQiniuUplaod($filePath,$key){
    //Access Key Secret Key
    $accessKey = config('ACCESSKEY');
    $secretKey = config('SECRETKEY');
    //构建鉴权对象
    $auth = new Auth($accessKey, $secretKey);
    //要上传的空间
    $bucket = config('BUCKET');
    $domain = "";
    $token = $auth->uploadToken($bucket);
    // 初始化 UploadManager 对象并进行文件的上传
    $uploadMgr = new UploadManager();
    // 调用 UploadManager putFile 方法进行文件的上传
    list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);

    if ($err !== null) {
    return ["status" => 0, "msg" => $err, "data" => ""];
    } else {
    //返回图片的完整URL
    return ['status' => 1, 'data' => $ret['key']];
    }
    }
  • 相关阅读:
    BZOJ2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
    BZOJ2044: 三维导弹拦截
    BZOJ2982: combination
    Solidity(address的四个方法)
    Solidity基础
    如何搭建以太坊的私有链
    挖矿
    智能合约
    密码学
    比特币
  • 原文地址:https://www.cnblogs.com/nnhgd/p/9844026.html
Copyright © 2011-2022 走看看