美文网首页
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