七牛整合php上传从微信下载接口下载下来的文件

因为ios系统直接读取不了MP3格式的文件,所以从微信接口下载下来的MP3格式音频上传到七牛后要转码。
Sample code:

public function doMobileUploadToQiniu() {
global $_GPC,$_W;
$hd=$_GPC['hd'];
$weid=$_W['weid'];
$from_user = $_GPC['from_user'];
$media_id = $_GPC['voiceServerId'];
$access_key = 'xxxxxxxxxxxxxxxxxxxxx'; 
$secret_key = 'xxxxxxxxxxxxxxxxxxxxx';

$access_token_json = $_W['account']['access_token']['token'];

$downloadurl = 'http://file.api.weixin.qq.com/cgi-bin/media/get?access_token='.$access_token_json.'&media_id='.$media_id;
$fetch = $this->urlsafe_base64_encode($downloadurl); 
$target = $media_id.".amr";
$to = $this->urlsafe_base64_encode($target); 
$url = 'http://iovip.qbox.me/fetch/'. $fetch .'/to/' . $to; 
$access_token = $this->generate_access_token($access_key, $secret_key, $url); 
$header[] = 'Content-Type: application/json'; 
$header[] = 'Authorization: QBox '. $access_token;


$con = $this->send('iovip.qbox.me/fetch/'.$fetch.'/to/'.$to, $header); 
$id = $this -> dataTransfer($access_key, $secret_key, $media_id);
return $id;
}

/**

 *将音频格式转码成amr格式

 */

public function dataTransfer($access_key, $secret_key, $media_id) {
$auth = new Auth($access_key, $secret_key);

$bucket = 'chuangyi-file-01';
$key = "".$media_id.".amr";
$pfop = New PersistentFop($auth, $bucket);

$fops='avthumb/mp3/ab/128k/ar/44100/acodec/libmp3lame';
list($id, $err, $r) = $pfop->execute($key, $fops);

if ($err != null) {
message("系统错误,请稍后再试");
} else {
return $id;
}
}

public function send($url, $header = '') { 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL,$url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_HEADER,1); 
curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
curl_setopt($curl, CURLOPT_POST, 1); 

$con = curl_exec($curl); 
if ($con === false) {

return $error;
} else { 
return $con; 

}

/** 
* generate_access_token 

* @desc 签名运算 
* @param string $access_key 
* @param string $secret_key 
* @param string $url 
* @param array $params 
* @return string 
*/ 
public function generate_access_token($access_key, $secret_key, $url, $params = ''){ 
$parsed_url = parse_url($url); 
$path = $parsed_url['path']; 
$access = $path; 
if (isset($parsed_url['query'])) { 
$access .= "?" . $parsed_url['query']; 

$access .= "\n"; 
if($params){ 
if (is_array($params)){ 
$params = http_build_query($params); 

$access .= $params; 

$digest = hash_hmac('sha1', $access, $secret_key, true); 
return $access_key.':'.$this->urlsafe_base64_encode($digest); 
}

更多相关文章
  • 七牛支持抓取远程图片 API,用 access_key + secret_key + url 生成 access_token, 把 access_token 加在 header 里,然后向 post url 就完成上传了. Sample code: <?php   /*   *  [email protected] ...
  • 通用类库-FTPClient帮助类,实现文件上传,目录操作,下载等动作
    直接上代码,这个也是我在网上找到的,自己测试修改后才公布出来的,大家可以放心使用,好的东西要分享,随时记录下来,好记性不如烂笔头,这个非常适合工作的. 1 //---------------------------------------------------------------------- ...
  • 一.用到的资源.ckfinder_java_2.4.2.zipckeditor_4.2_standard.zip/ckeditor.zipckeditor-java-core-3.5.3.zip二.执行步骤1. MyEclipse新建 Web Project : test_CKEditor_Find ...
  • 改成上面这样时 ,问题解决
  • 七牛是不错的云存储产品,特别是有免费的配额可供使用,存点小文件或者博客的插图什么的还是不错的.以下介绍在自己的Web应用中上传文件到七牛的方法. 基本思想 当我们想把本地的文件通过浏览器上传到自己的七牛云存储空间上时,就有两种思路 将文件直接上传到服务端,再由服务端将文件传输至七牛 向服务端请求七牛 ...
  • 微信JS-SDK选择相册或拍照并上传PHP实现
    理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可. 效果 通过微信js接口,调用底层程序. 需要引入js文件,并进行配置. <script src=, , ,).,).) ? ; $i < $length ...
  • ssh整合问题总结--在添加商品模块实现图片(文件)的上传
    今天在做毕设(基于SSH的网上商城项目)中碰到了一个文件上传的需求,就是在后台管理员的商品模块中,有一个添加商品,需要将磁盘上的图片上传到tomcat保存图片的指定目录中: 完成这个功能需要两个步,第一是图片上传,第二是保存到数据库,在完成这个功能时候碰到了一些小问题,所以把完整的步骤记录一下: 第 ...
  • 云存储:文件的上传
    大型网站架构:降低主站服务器的压力CDN:智能DNS挑选最近的服务器提供图片等云存储:把图片放到单独的服务器,价格低 云存储:七牛.AWS.又拍云.盛大云.阿里云.百度云云计算:租.按需使用.按需付费 又拍云:帐号注册--操作空间上传:ftp:// 登录http:// 下载SDK 问题:把上传的文件 ...
一周排行
  • p 打印模式空间内容d 删除模式空间内容a 追加一行i 插入一行c 替换一行! 非n 读入一行,覆盖掉模式空间内容举个例子echo -e '1\n2\n3\n4'|sed 'n;s/\n//'首先读入第一行,此时模式 ...
  • AngularJS结合RequireJS做文件合并压缩的那些坑
    我在项目使用了AngularJS框架,用RequireJS做异步模块加载(AMD),在做文 ...
  • 近日,诺基亚推出了功能机系列的最新款1050,它没有性能强劲的CPU,也没有智能操作系统,价格也只要169元.而在高端市场屡屡受挫的诺基亚,低端的1050却卖了个满堂红.在很多中国很多地方的市场上,仍然能看到各种品牌 ...
  • 锐捷交换机升级操作系统
      以前只知道备份配置文件用tftp,这次备份中学习了xmodem的方法.  1.首先用c ...
  • 1.安装rpm -ivh bind-version.rpm bind-chroot-version.rpm caching-nameserver-version.rpm bind-libs-version.rpm b ...
  • 在做过了haprxy负载均衡和动静分离后,haproxy在这两方面的确比nginx更专业一些,session保持,cookie引导,url监测后端,mysql负载均衡等都是nginx所不具备的:但这并不能就说hapr ...
  • DPM2012系列之九:BMR裸机还原Windowsserver2008R2操作系统
    在上一篇文章中(http://543925535.blog.51cto.com/63983 ...
  •         摘自网络达人zzzevazzz, 用Base64编码数据,好处是压缩了大小(相对bin2str而言),缺点是增加处理时间和脚本复杂度.由于效率瓶颈是在bat生成vbs这一步,所以总的来说还是合算了.写 ...
  • 大家写了不少四则运算的练习,这些代码都各有特色,大家写的 "软件" 也有一定的用处. 如果我们要把这个功能放到不同的环境中去 (例如,命令行,windows 图形界面程序,网页程序,手机App), ...
  • #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include < #include <fcnt ...