七牛整合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   /*   *   * @de ...
  • 通用类库-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 问题:把上传的文件 ...
一周排行
  • 这几年经历过很多事,和朋友创业过, 自己也在创业(动软卓越),看过太多创业的人.创业的事,时不时静下心来把所看所感所想总结一下,记录一下,不足为鉴,仅作为自己在路上的警示与提醒,并和广大准备创业和创业中的朋友们茶余饭 ...
  • 中华直销网上线三个月以来运行一直很稳定,但是最近几天频繁出现这个错误 看状态mysql连接数很多 好多127.0.0.306 TIME_WAIT ,经过各种优化均无明显效果,dedecms论坛好多人反应遇到该问 ...
  •      1. DEDE -这是一款国内开源的cms,作者是一个个人,能做出如此功能的cms,是相当不错的.2007版功能十分强大,希望能改善之前数据量一大,更新静态页就很慢的缺点.因为开源,有较多的玩家和拥护者.非 ...
  • MySQL Study案例之--MySQL客户端连接故障系统环境:操作系统:RedHat EL6DB Soft:  MySQL 5.6.4-m7    在系统安装了源码包 MySQL 5.6.4-m7版本,启动服务后 ...
  • mysqlsla是hackmysql.com推出的一款MySQL的日志分析工具,功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等. 一.使用mysqlsla -lt slo ...
  • DiscuzX3.1登录分析
    Discuz! X3.1登录分析其实跟Discuz! X3没什么变化.这里再来走一遍:版本 ...
  • 流言能否动摇联想?阿祥       鼠年岁尾,联想遭遇了双重"严冬",一边是全球金融危机的冲击,一边是捕风捉影的种种流言.远离核心的评论只能是妄加猜测,而妄加猜测的评论可能是蛊惑人心的谣言.    ...
  • TestNG入门教程
    国庆7天假期,大部分朋友都出去旅游了,微信圈里全是晒旅游的照片, 东南亚游,欧洲游呀,真是 ...
  • JDBC之批处理 现在有这么一个需求,要求把2000条记录插入表中,如果使用java代码来操作,我们可以使用Statement或者PreparedStatement来实现,通过循环来把SQL语句一条又一条地发送给数据 ...
  •     当下网络上的mysql集群大都是介绍在Linux下的配置方案,对于在windows下的配置确是很少,少有的几篇文章也是经过筛检了的,很难跑起来.本人经过几天的研究终于将mysql在windows Xp环境下的 ...