文件是上传成功了,但是就停了,咩有按照设置的callbackUrl跳转,我只是想上传之后七牛返回Location字段为我设置的URl,并且带post或get,好让我把上传文件信息插入数据库,还有callbackBody和returnBody除有什么区别?感激不尽..

flag和表单代码如下:(隐藏了accesskey还有srcretkey)

print_r($_POST);

$client = new QiniuClient($accessKey,$secretKey);

$flag = array('scope'=>'help', 'saveKey'=> 'kdfsufes6asdawes4ks.zip','callbackUrl '=> '"http://6.ncic.sinaapp.com/"', 'callbackBody' => '"name": $(fname),

"size": $(fsize),

"w": $(imageInfo.width),

"h": $(imageInfo.height),

"hash": $(etag),');

//print_r($client);

//print $token;print $access_token;

?>

enctype="multipart/form-data">

include的内容

class QiniuClient

{

const UP_HOST = 'http://up.qiniu.com';

const RS_HOST = 'http://rs.qbox.me';

const RSF_HOST = 'http://rsf.qbox.me';

public $accessKey;

public $secretKey;

function __construct($accessKey='',$secretKey='')

{

$this->accessKey = $accessKey;

$this->secretKey = $secretKey;

}

public function uploadFile($filePath,$bucket,$key=null)

{

$uploadToken = $this->uploadToken(array('scope' => $bucket));

$data = array();

$data['file'] = "@$filePath";

$data['token'] = $uploadToken;

if($key) $data['key'] = $key;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, self::UP_HOST);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

$result = curl_exec($ch);

curl_close($ch);

return $result;

}

public function upload($content,$bucket,$key=null)

{

$filePath = tempnam(sys_get_temp_dir(), 'UPLOAD');

file_put_contents($filePath, $content);

$result = $this->uploadFile($filePath,$bucket,$key);

unlink($filePath);

return $result;

}

public function uploadRemote($url,$bucket,$key=null)

{

$filePath = tempnam(sys_get_temp_dir(), 'UPLOAD');

copy($url,$filePath);

$result = $this->uploadFile($filePath,$bucket,$key);

unlink($filePath);

return $result;

}

public function stat($bucket,$key)

{

$encodedEntryURI = self::urlsafe_base64_encode("{$bucket}:{$key}");

$url = "/stat/{$encodedEntryURI}";

return $this->fileHandle($url);

}

public function move($bucket,$key,$bucket2,$key2=false)

{

if(!$key2) {

$key2 = $bucket2;

$bucket2 = $bucket;

}

$encodedEntryURISrc = self::urlsafe_base64_encode("{$bucket}:{$key}");

$encodedEntryURIDest = self::urlsafe_base64_encode("{$bucket2}:{$key2}");

$url = "/move/{$encodedEntryURISrc}/{$encodedEntryURIDest}";

return $this->fileHandle($url);

}

public function copy($bucket,$key,$bucket2,$key2=false)

{

if(!$key2) {

$key2 = $bucket2;

$bucket2 = $bucket;

}

$encodedEntryURISrc = self::urlsafe_base64_encode("{$bucket}:{$key}");

$encodedEntryURIDest = self::urlsafe_base64_encode("{$bucket2}:{$key2}");

$url = "/copy/{$encodedEntryURISrc}/{$encodedEntryURIDest}";

return $this->fileHandle($url);

}

public function delete($bucket,$key)

{

$encodedEntryURI = self::urlsafe_base64_encode("{$bucket}:{$key}");

$url = "/delete/{$encodedEntryURI}";

return $this->fileHandle($url);

}

// $operator = stat|move|copy|delete

// $client->batch('stat',array('square:test/test5.txt','square:test/test13.png'));

public function batch($operator,$files)

{

$data = '';

foreach ($files as $file) {

if(!is_array($file)) {

$encodedEntryURI = self::urlsafe_base64_encode($file);

$data.="op=/{$operator}/{$encodedEntryURI}&";

}else{

$encodedEntryURI = self::urlsafe_base64_encode($file[0]);

$encodedEntryURIDest = self::urlsafe_base64_encode($file[1]);

$data.="op=/{$operator}/{$encodedEntryURI}/{$encodedEntryURIDest}&";

}

}

return $this->fileHandle('/batch',$data);

}

public function listFiles($bucket,$limit='',$prefix='',$marker='')

{

$params = array_filter(compact('bucket','limit','prefix','marker'));

$url = self::RSF_HOST.'/list?'.http_build_query($params);

return $this->fileHandle($url);

}

public function fileHandle($url,$data=array())

{

if(strpos($url, 'http://')!==0) $url = self::RS_HOST.$url;

if(is_array($data)) $accessToken = $this->accessToken($url);

else $accessToken = $this->accessToken($url,$data);

$ch = curl_init();

curl_setopt($ch, CURLOPT_HTTPHEADER, array(

'Authorization: QBox '.$accessToken,

));

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, true);

// If $data is an array, the Content-Type header will be set to multipart/form-data

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);

$info = curl_getinfo($ch);

curl_close($ch);

if($info['http_code']>=300)

throw new Exception($info['http_code'].': '.$result);

if($info['content_type']=='application/json')

return json_decode($result,true);

return $result;

}

public function uploadToken($flags)

{

if(!isset($flags['deadline']))

$flags['deadline'] = 3600 + time();

$encodedFlags = self::urlsafe_base64_encode(json_encode($flags));

$sign = hash_hmac('sha1', $encodedFlags, $this->secretKey, true);

$encodedSign = self::urlsafe_base64_encode($sign);

$token = $this->accessKey.':'.$encodedSign. ':' . $encodedFlags;

return $token;

}

public function accessToken($url,$body=false){

$parsed_url = parse_url($url);

$path = $parsed_url['path'];

$access = $path;

if (isset($parsed_url['query'])) {

$access .= "?" . $parsed_url['query'];

}

$access .= "\n";

if($body) $access .= $body;

$digest = hash_hmac('sha1', $access, $this->secretKey, true);

return $this->accessKey.':'.self::urlsafe_base64_encode($digest);

}

public static function urlsafe_base64_encode($str){

$find = array("+","/");

$replace = array("-", "_");

return str_replace($find, $replace, base64_encode($str));

}

}

七牛云 rs.php 没有,设置了callbackUrl,七牛只是在客户端上打印了json格式的key和hash,居然没有按照设置跳转回来..怎么弄?...相关推荐

  1. 七牛云配置二级域名,从而避免七牛云30天自动更改域名的问题

    七牛云配置二级域名,从而避免七牛云30天自动更改域名的问题 写在前面 为什么要解决这个问题呢,我们都知道七牛云在你新建一个存储空间的时候会给你分配一个临时的域名,这个域名是有时间限制的(一般是30天) ...

  2. 七牛云rs.php位置,七牛云存储PHP生成管理凭证以及查看文件(state)

    管理凭证(Access Token)是七牛云存储用于验证管理请求合法性的机制.官方建议仅在业务服务器端使用这一类凭证,避免意外授权导致滥用.凭证算法生成待签名的原始字符串: 抽取请求URL中或?的部分 ...

  3. python教程七牛云_使用Python实现数据从七牛云到阿里云的自动化迁移

    工具python3.5 顺手的IDE(轻量级推荐vscode) qiniu/qshell (本文是基于 mac 系统开发,所以使用 qshell 的 mac 版本,读者请根据自己的系统下载,也可以直接 ...

  4. ueditor与七牛云存储结合

    2019独角兽企业重金招聘Python工程师标准>>> 摘要:  ueditor与七牛云存储结合,主要是表单api. ueditor上传图片到七牛云存储 ueditor结合七牛传图片 ...

  5. php 七牛云fetch,七牛云调用类

    基于thinkphp5.0.15, 可以扩展数据库保存 自己了个七牛云调用类,用的是官方SDK 7.2.3 直接将文件放到Qinui里 将整个Qinui文件夹放到 extend 即可. namespa ...

  6. kindeditor php教程,kindeditor 加入七牛云上传的实例讲解

    七牛云上传主要有两种: 服务端上传 前端上传,前端又分两种返回方式: 1).重定向返回,可以解决ajax跨域的问题 2).回调返回,七牛云先向服务端要返回数据,再由七牛云返回前端,解决不支持重定向的请 ...

  7. Android开发中使用七牛云存储进行图片上传下载

    Android开发中的图片存储本来就是比较耗时耗地的事情,而使用第三方的七牛云,便可以很好的解决这些后顾之忧,最近我也是在学习七牛的SDK,将使用过程在这记录下来,方便以后使用. 先说一下七牛云的存储 ...

  8. 通过七牛云建立私有图床

    七牛云是国内一家领先的云存储公司,可以利用七牛云存储对象存储图片.虽然现在各种图床,但还是希望能够搭建一个私有的图床.所以一直有希望使用七牛云搭建图床的想法,之前一直没有好好地看懂七牛云的 SDK,后 ...

  9. fatal error lnk1120: 1 个无法解析的外部命令_3月1日七牛云存储割韭菜的应对方法...

    前言 早上起来看邮件,看到一封被七牛云割韭菜的公告: 内心冰冰凉,不过大家都要吃饭的嘛总不能一直免费下去.所以来研究一下对于我们这种穷人应该如何应对. 一.七牛CDN加速流程 主要流程分析 1.用户通 ...

  10. html播放七牛云视频,直传七牛云视频播放商业版【价值199元】

    福利:本资源正在众筹中,如贴内有下载链接则已众筹成功可下载资源,否则暂无资源,你可以在官方购买此资源后,用于[交换]魔趣吧内已发布的其他你需要的极品资源!这样你既可以买到自己想要的资源,又可以通过交换 ...

最新文章

  1. .NET简谈组件程序设计之(详解NetRemoting结构)
  2. ARM Trustzone介绍-视频学习
  3. JSON数组分配输出每个li
  4. Python项目:用微信自动给女朋友每天一句英语问候
  5. 用WAP手机远程遥控电脑1
  6. char flag[20]c语言,C语言试卷
  7. poj1470 LCA倍增法
  8. Monte Carlo采样
  9. SVN中,A项目如何共享B项目的内容
  10. 华三交换机配置access命令_H3C交换机配置命令大全讲解
  11. iDB-数据库自动化运维平台
  12. 开源、强大的Linux服务器集群管理工具,比宝塔好用!
  13. 【CentOS7安装Redis及常用命令】
  14. Camstar开发常用数据库表及其关联
  15. Nginx代理Partainer
  16. 这10个安全测试工具,优秀且免费
  17. 选择电阻要考虑哪些点?
  18. DVDStyler(dvd制作工具)官方中文版V3.2 | 制作dvd视频光盘软件下载 | 怎么制作dvd视频光盘
  19. 【综合类型第 31 篇】如何下载 GitHub 的 Logo
  20. Django 搭建博客网站-task00:环境配置

热门文章

  1. php循环,die/exit脚本执行控制,文件载入及错误控制
  2. 莫比乌斯反演 BZOJ 2820
  3. 深入浅出MVC框架模式
  4. 12 自定义标签/JSTL标签库/web国际化/java web之设计模式和案例
  5. 【Prison Break】第八天(4.4)
  6. 【LeetCode】【数组】题号:*304,二维区域和检索
  7. 【LeetCode】【数组】题号:*453,数组元素相等的最小操作次数
  8. 斐波那契数列(剑指offer)
  9. 【ArcGIS|空间分析|网络分析】9 使用位置分配选择最佳商店位置
  10. ajax加php做的简单登录注册,简单示例AJAX结合PHP代码实现登录效果代码