微信的录音文件上传到微信服务器上,只能保存三天。 因此需要做一个转存到自己服务器,或者七牛云的操作。

转存到自己服务器

  1. 调用微信JSSDK API 录音, 录音结束,上传到微信服务器,获取录音文件的 media_id
  2. 根据 media_id 下载录音文件(amr)格式
  3. 转存到自己服务器(amr需要转码成mp3) 或者 七牛云(有转码功能)

步骤1代码

     .../*** 开始录音[省略了一部分代码]*/startRecord: function() {var that = this;if (!that._startRecordFlag) {typeof wx !== "undefined" && wx.startRecord({success: function(res) {Logger.log("res", res)if (res.errMsg == 'startRecord:ok') {Logger.log("正在开始录音....")that._startTime = new Date().getTime();}}});}},/*** 结束录音,并上传*/stopRecord: function() {that._startRecordFlag = false;typeof wx !== "undefined" && wx.stopRecord({success: function(res) {//上传录音wx.uploadVoice({localId: res.localId,isShowProgressTips: 1,success: function(resUpload) {//下载录音文件到服务器,转存起来Model.downloadRecordAudio(resUpload.serverId, function(result) {console.log(resUpload.serverId, result.path)that.attachment = result.path;// that.attachment = resUpload.serverId;that.stopRecordCallback && that.stopRecordCallback();})}});}});},
...

步骤2代码

<?php
//处理方法,
upload();//media_id为微信jssdk接口上传后返回的媒体id
function upload(){$media_id = $_POST["media_id"];$access_token = getAccessToken();$path = "./weixinrecord/";   //保存路径,相对当前文件的路径$outPath = "./php/weixinrecord/";  //输出路径,给show.php 文件用,上一级if(!is_dir($path)){mkdir($path);}//微 信上传下载媒体文件$url = "http://file.api.weixin.qq.com/cgi-bin/media/get?access_token={$access_token}&media_id={$media_id}";$filename = "wxupload_".time().rand(1111,9999).".amr";downAndSaveFile($url,$path."/".$filename);$data["path"] = $outPath.$filename;$data["msg"] = "download record audio success!";// $data["url"] = $url;echo json_encode($data);
}//获取Token
function getAccessToken() {//  access_token 应该全局存储与更新,以下代码以写入到文件中做示例$data = json_decode(file_get_contents("./access_token.json"));if ($data->expire_time < time()) {$appid = "youappid";  //自己的appid$appsecret = "youappsecret";  //自己的appsecret$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";$res = json_decode(httpGet($url));$access_token = $res->access_token;if ($access_token) {$data->expire_time = time() + 7000;$data->access_token = $access_token;$fp = fopen("./access_token.json", "w");fwrite($fp, json_encode($data));fclose($fp);}}else {$access_token = $data->access_token;}return $access_token;
}//HTTP get 请求
function httpGet($url) {$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);curl_setopt($curl, CURLOPT_URL, $url);$res = curl_exec($curl);curl_close($curl);return $res;
}//根据URL地址,下载文件
function downAndSaveFile($url,$savePath){ob_start();readfile($url);$img  = ob_get_contents();ob_end_clean();$size = strlen($img);$fp = fopen($savePath, 'a');fwrite($fp, $img);fclose($fp);
}
?>

步骤3代码【略】

目前没有使用七牛云,因此该部分代码,参考七牛云官网

转载于:https://www.cnblogs.com/zhongxia/p/5917163.html

【微信JSSDK】PHP版微信录音文件下载相关推荐

  1. Python倒计时自动发微信(电脑版微信)

    一.前言: Python倒计时自动发微信(电脑版微信登录状态) 二.主要思路及步骤: 1.先启动微信 2.定位到搜索框 3.搜索微信 4.进入聊天窗口 5.粘贴文本内容 6.发送   7.关闭微信窗口 ...

  2. 微信公众号录音功能及录音文件下载到自己服务器 一

    网上查了很多资料,自己在总结一下,感谢各位大佬提供的资料. 页面 <div class="lbox_close wxapi_form"><button class ...

  3. php微信jssdk下载图片,微信JSSDK上传多张图片回调方法以及服务器端处理下载媒体...

    有时候我们会在微信有这样的需求.在一个上传控件里面上传多个图片.而在微信里面使用file上传有些手机会崩溃而且.服务器端压缩图片效果也没有微信压缩效果好.这个就要使用微信的jssdk了. 如下就是微信 ...

  4. java微信机器人_Java版微信机器人代码

    Java版微信机器人代码 (2014-07-31 09:47:58) 标签: 软件测试 java 上海泽众软件 package com.eiyoung.wechat.web.controller; i ...

  5. Android及IOS微信5,Android版微信5.0今日正式发布 与iOS版略不同

    原定于今日(9日)上午11时正式发布的Android版微信5.0终于"千呼万唤始出来",约17:30分左右,出现在腾讯旗下的"应用宝"中. 腾讯官方曾表示,8月 ...

  6. 鸿蒙版微信和安卓版微信一样吗,让微信只支持鸿蒙,放弃安卓?那不是鸿蒙崛起,而是腾讯凉凉...

    众所周知,自从华为鸿蒙发布之后,众多的网友们可是为鸿蒙系统操碎了心,有人觉得应该马上用到手机上,只要用户有了,应用厂商就来了,生态就会很快完善了. 也有人出了一个主意,目前国内用户对微信.支付宝等的依 ...

  7. 读取PC版微信数据库(电脑版微信数据库)内容

    原始网址   https://www.cnblogs.com/Charltsing/p/WeChatPCdb.html 联系QQ:564955427 1.PC版微信的密钥是32位byte,不同于安卓版 ...

  8. 微信JSSDK之添加微信卡券

    微信卡券的使用,是在之前的微信jsapi基础上,再加上一次卡券的单独验签, 这里对上篇微信JSSDK的使用稍作修改: 1. 微信的accessToken的获取有时间限制,之前是将token的读取放在一 ...

  9. 微信jssdk上传图片java_微信JSSDK上传图片_javascript技巧

    前不久微信公开了一些接口,其中有一个uploadImage接口用于上传图片,一般和chooseImage接口配合使用.先调用chooseImage接口让用户选择一张或者多张图片,用户选择完毕后微信会返 ...

  10. 微信协议网页版微信协议解析

    最近在做个微信机器人,所以研究了网页版的微信协议及相关接口,在这里简单总结一下. 从表面上看,对于网页版微信我们的使用流程是这样的: 很简单,只有四步,但如果细化到内里细节的话,上面这简单四步的背后其 ...

最新文章

  1. 赵劲松:预知潜在风险,做化工安全科技创新的引领者
  2. [No0000D2]ClearCSharp编程清理脚本批处理bat
  3. 【MPI高性能计算】蒙特卡洛方法计算pi值
  4. 原生JS写Ajax的请求函数
  5. JavaWEB开发的国际化
  6. passwd: 鉴定令牌操作错误_user 及passwd 设置
  7. 网易云音乐转码_网易云音乐产品分析报告
  8. python绘制中国地图(模仿中央气象台)
  9. win10前置耳机插孔没声音_win10头戴式耳机麦克风没声音怎么办
  10. 小程序插入激励视频广告教程
  11. 第十届全国大学生光电设计大赛分析前瞻(一文看懂光电设计大赛创意赛,做好准备)
  12. Wireshark流量分析
  13. 0xC0000005: 读取位置 xxx时发生访问冲突
  14. RGB/YUV/YIQ 颜色空间
  15. paddle 基础函数 cosine_decay
  16. syntax error, unexpected ‘array‘ (T_ARRAY)
  17. 闻听成都华为的员工跳楼自杀
  18. 凝心聚力,不负好时光——慧慧兔团建拓展之旅
  19. 在pycharm中直接安装第三方包时出错提示无合适版本---解决方案
  20. 【定量分析、量化金融与统计学】统计推断基础(2)---样本均值分布、中心极限定理、正态分布

热门文章

  1. 起底Filecoin:易崩盘、估值高、政策风险大
  2. 经典语录_生命的智慧
  3. 动态规划 — 钢条切割问题
  4. 转:经典SQL语句大全(绝对的经典)
  5. [ML](回归和分类)
  6. Unity PC打包后日志查看
  7. jQuery中的基本选择器,id,class,元素,通用
  8. python爬取17000个球员_Python爬取NBA球员生涯数据及简单可视化
  9. Flash Helper Service 这个流氓,动不动弹出广告!!
  10. ACMUG活动回顾 | MySQL创始人见面会技术分享会圆满结束