七牛整合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 问题:把上传的文件 ...
一周排行
  • find命令学习
    一.功能说明    find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视 ...
  • cisco的一些小命令Cisco 2600 Router 基本命令及详解Cisco 2600 Router 的硬件结构包括:1.处理器:负责执行处理包所需的工作.比如:路由发现,路由转发以及路由决定等.2.存储器:在 ...
  •            已经工作四五年了,感觉自己学习没什么进步了,就想找个培训机构充充电.同事去了北大青鸟,结果反映不是很好.我自己就去网上查了查.不查不知道,一查吓一跳.唉,网上鱼目混珠,所谓的枪手太多了,还互相攻 ...
  • 参数说明: -d 启动为守护进程 -m <num> 分配给Memcached使用的内存数量,单位是MB,默认为64MB -u <username> 运行Memcached的用户,仅当作为roo ...
  • 作文题 "细雨湿衣看不见,闲花落地听无声"是唐朝诗人刘长卿在<别严士元>中的诗句.曾经有人这样理解这句诗:1.这是歌颂春天的美好意境.2.闲花.细雨表达了不为人知的寂寞.3.看不见.听 ...
  • 1.关闭那么没有使用的InnoDB MEMORY等其他引擎 2.数据库索引 索引的缺点:极大地加速了查询,减少扫描和锁定的数据行数. 索引的缺点:占用磁盘空间,减慢了数据更新速度,增加了磁盘IO. 添加索引有如下原则 ...
  • css3:linear-gradient 比如:黑色渐变到白色,代码如下: .gradient{ background: -moz-linear-gradient(top, #000000 0%, #ffffff 1 ...
  • week3b:个人博客作业
    vs2013的初步使用 由于自己在写这篇博客的时候已经把vs2013安装完毕,就我写了. ...
  • 1. 问题        创建一个User类: ) 出现了异常 这是为什么呢?  2. 分析问题:       要想得到这个答案 需要去查看代码的执行过程      首先看 Iterator<User> ...
  • Docker到底是什么为什么它这么火
    转载来自:http://cloud.51cto.com/art/201410/453718 ...