美文网首页
php上传文件与图片到七牛的实例详解

php上传文件与图片到七牛的实例详解

作者: 铁匠简记 | 来源:发表于2018-09-04 15:20 被阅读307次

    上传文件到七牛最简单的方式就是使用七牛官方最新的SDK

    安装

    • 通过composer,这是推荐的方式,可以使用composer.json 声明依赖,或者运行下面的命令。SDK 包已经放到这里 qiniu/php-sdk
    composer require qiniu/php-sdk
    
    • 直接下载安装,SDK 没有依赖其他第三方库,但需要参照 composer的autoloader,增加一个自己的autoloader程序。

    运行环境

    使用方法

    上传
    use Qiniu\Storage\UploadManager;
    use Qiniu\Auth;
    ...
        $upManager = new UploadManager();
        $auth = new Auth($accessKey, $secretKey);
        $token = $auth->uploadToken($bucketName);
        list($ret, $error) = $upManager->put($token, 'formput', 'hello world');
    ...
    

    测试

    ./vendor/bin/phpunit tests/Qiniu/Tests/
    

    常见问题

    • $error保留了请求响应的信息,失败情况下ret 为none, 将$error可以打印出来,提交给我们。
    • API 的使用 demo 可以参考 单元测试

    DEMO 封装

    注:demo来自网友,如有侵权请联系删除。

    1、上传文件到七牛
    use Qiniu\Auth;
    use Qiniu\Storage\UploadManager;
    
    $cfg = [
     'access' => 'YOUR_ACCESS_KEY',
     'secret' => 'YOUR_SECRET_KEY',
     'bucket' => 'YOUR_BUCKET',
     'domain' => 'https://images.your_domain.com'
    ];
    
    $auth = new Auth($cfg['access'], $cfg['secret']);
    // 创建一个过期时间为1小时的临时上传令牌
    $token = $auth->uploadToken($cfg['bucket'], null, 3600);
    
    $filePath = "./file.png";
    
    $uploadMgr = new UploadManager();
    list($ret, $err) = $uploadMgr->putFile($token, null, $filePath);
    if($err !== null) {
      $this->err = $err;
    } else {
      echo $cfg['domain'] . '/' . $ret['key'];
    }
    
    2、php向七牛上传base64编码的图片
    <?php
    require_once 'vendor/autoload.php';
    header('Access-Control-Allow-Origin:*');
    
    use Qiniu\Auth;
    
    $bucket = '要上传的空间名';
    $accessKey = '你的accessKey';
    $secretKey = '你的secretKey';
    $auth = new Auth($accessKey, $secretKey);
    //获取上传所需的token
    $upToken = $auth->uploadToken($bucket, null, 3600);
    
    function requestByCurl($remote_server,$post_string,$upToken) { 
       $headers = array();
       $headers[] = 'Content-Type:image/png';
       $headers[] = 'Authorization:UpToken '.$upToken;
       $ch = curl_init(); 
       curl_setopt($ch, CURLOPT_URL,$remote_server); 
       //curl_setopt($ch, CURLOPT_HEADER, 0);
       curl_setopt($ch, CURLOPT_HTTPHEADER ,$headers);
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
       //curl_setopt($ch, CURLOPT_POST, 1);
       curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
       curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
       curl_setopt($ch, CURLOPT_TIMEOUT, 30);
       $data = curl_exec($ch); 
       curl_close($ch); 
      
       return $data; 
    } 
    $str="base64编码的字符串";
    echo "<pre>";
    echo request_by_curl('http://upload.qiniu.com/putb64/-1',$str,$upToken);
    echo "</pre>";
    

    相关文章

      网友评论

          本文标题:php上传文件与图片到七牛的实例详解

          本文链接:https://www.haomeiwen.com/subject/aswgwftx.html