七牛整合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 问题:把上传的文件 ...
一周排行
  • 定义    在Internet RFC标准中,Netstat的定义是: Netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告.描述Netstat 是控制台命 ...
  • python在交互模式下,输入命令的时候按tab键就按时间tab键的功能输出,在书写python时多有不便.把下面的代码写入一个文件tab.py,放到/usr/lib/python2.6/site-packages/ ...
  • CentOs5.5下pptpvpn安装与配置
    VPN(Virtual Private Network,虚拟专用网络)是专用网络的延伸,它 ...
  • 作者:JesseLZJ出处:http://jesselzj.cnblogs.com
  • 1.eoe Android开发者论坛目前国内最早的Android开发者社区,人气非常旺聚集了不少Android开发方面的高手,开发中遇到的问题大都能在这里获得解决,网站最大的特色是定期发布<eoe特刊>, ...
  • 无法向会话状态服务器发出会话状态请求 错误的解决方法  (3 9) webconfig seeion 状态服务 杂谈 分类: 系统开发 当WEBCONFIG文件中设置SESSION存储 ...
  • 这是一封任正非给华为新人的公开信,通过这封邮件,我们一起来感受华为文化,感受任正非作为一个长者对新员工的教诲和期望.与君共勉.“您有幸进入了华为公司. 我们也有幸获得了与您的合作. 我们将在共同信任和相互理解的基础上 ...
  • 最近需要做一个扫码登录的功能,通过HP QR Code来实现,HP QR Code是一个开放源代码的php生成二维码的类库 地址:http://phpqrcode.sourceforge.net/ 通过 phpqrc ...
  • 直接上代码: var word = "fdc-number="; if(word.indexOf("=")>0){ var Rex = /^fdc.+=/; res = ...
  • 一个纯DIV+CSS制作的图片切换的实例,高手制作,值得收藏,纯css制作的图片切换更有利于搜索引擎的收录和友好.下面我们看一下高手是怎么写的纯CSS图片切换的.<!--CTYPE html PUBLIC &q ...