PHP 七牛云sdk上传图片问题

两个重要文件:

1、upload_simple_file.php,生成token

2、upload_verify_callback.php,回调文件地址(大问题)

<?php
require_once __DIR__ . '/../autoload.php';

// 引入鉴权类
use Qiniu\Auth;

// 引入上传类
use Qiniu\Storage\UploadManager;
use Qiniu\Zone;
use Qiniu\Config;

// 需要填写你的 Access Key 和 Secret Key
$accessKey = '';七牛账号秘钥
$secretKey = '';七牛账号秘钥
$bucket = '';上传空间

// 构建鉴权对象
$auth = new Auth($accessKey, $secretKey);
//带数据处理的凭证
$saveMp4Entry = \Qiniu\base64_urlSafeEncode($bucket . ":avthumb_test_target.mp4");
$saveJpgEntry = \Qiniu\base64_urlSafeEncode($bucket . ":vframe_test_target.jpg");
$avthumbMp4Fop = "avthumb/mp4|saveas/" . $saveMp4Entry;
$vframeJpgFop = "vframe/jpg/offset/1|saveas/" . $saveJpgEntry;
// 生成上传 Token
$policy = array( 
   'callbackBody' =>  '{"key":"$(key)","hash":"$(etag)","bucket":"$(bucket)"}',
// 'callbackUrl' => 'http://172.30.251.210/upload_verify_callback.php',	
// 'callbackUrl' => 'https://admin.zhssw.com/Api/qiniuCall',
// 'callbackUrl' => 'http://test.admin.zhssw.com/php-sdk/examples/upload_verify_callback.php',	
'callbackUrl' => 'https://msktapi.zhssw.com/Upload/qiniuCall',	
'callbakBodyType' => 'application/x-www-form-urlencoded',
    'persistentOps' => $avthumbMp4Fop . ";" . $vframeJpgFop,
//    'persistentPipeline' => "video-pipe",
//    'persistentNotifyUrl' => "http://api2.zhssw.com/php-sdk/examples/upload_verify_callback.php",
);
$expires = 7200;
$token = $auth->uploadToken($bucket, null, $expires, $policy, true);
//$token = $auth->uploadToken($bucket);
$arr = [
	'uptoken' => $token,
	'domain'=>'https://img3.zhssw.com'
];

header('content-type:application/json;charset=utf8');
echo json_encode($arr);exit;
// 要上传文件的本地路径
$filePath = './php-logo.png';

// 上传到七牛后保存的文件名
$key = 'my-php-logo.png';

// 初始化 UploadManager 对象并进行文件的上传。
$zone = Zone::zone1();
$config = new Config($zone);
$uploadMgr = new UploadManager($config);

// 调用 UploadManager 的 putFile 方法进行文件的上传。
list($ret, $err) = $uploadMgr->putFile($token, $key, $filePath);
echo "\n====> putFile result: \n";
if ($err !== null) {
    var_dump($err);
} else {
    var_dump($ret);
}
<?php
require_once __DIR__ . '/../autoload.php';

use Qiniu\Auth;

$accessKey = '';
$secretKey = '';
$bucket = '';

$auth = new Auth($accessKey, $secretKey);

//获取回调的body信息
$callbackBody = file_get_contents('php://input');
file_put_contents('11111.txt',$callbackBody);
//回调的contentType
$contentType = 'application/x-www-form-urlencoded';

//回调的签名信息,可以验证该回调是否来自七牛
$authorization = $_SERVER['HTTP_AUTHORIZATION'];

//七牛回调的url,具体可以参考:http://developer.qiniu.com/docs/v6/api/reference/security/put-policy.html
$url = 'http://172.30.251.210/upload_verify_callback.php';
// $url = 'http://dev.admin_wei.zhssw.com/php-sdk/examples/upload_verify_callback.php';
// $url = 'http://test.admin.zhssw.com/php-sdk/examples/upload_verify_callback.php';
$url = 'https://msktapi.zhssw.com/Upload/qiniuCall';
$isQiniuCallback = $auth->verifyCallback($contentType, $authorization, $url, $callbackBody);

if ($isQiniuCallback) {
$callbackBody = json_decode($callbackBody,true);
    $url = "https://img3.zhssw.com/".$callbackBody['key'];
file_put_contents('22222.txt',$url);
    $resp = array('ret' => 'success','url' =>$url);
} else {
    $resp = array('ret' => 'failed');
}

echo json_encode($resp);

回调经常报错参考:https://developer.qiniu.com/kodo/kb/3881/upload-the-common-failure-status-code-and-solve-method

我的报错是

1、提示使用什么地址,全局搜索改了就可以了。upload-z1.qiniup.com

2、579,报错\"err_code\":200,\"error\":\"unexcepted response\",图片已经成功上传至七牛云,但是回调错误,返回不到key,图片地址。找了好多文档解决不了,我自行拼接地址,

 

参考文档:

https://blog.csdn.net/guoer9973/article/details/45916709

https://blog.csdn.net/guoer9973/article/details/50461806

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值