前言

书接上回的《SpringBoot开发案例之微信小程序文件上传》,正常的业务流程是,口语测评需要学生通过前端微信小程序录入一段音频,通过调用第三方音频处理服务商进行评分,然后服务端对原始录音、标准录音以及评分信息进行存储,最终呈现给学生并用于复看以及复读。

微信端

index.wxml:

开始录音

暂停录音

停止录音

播放录音

上传录音

index.wxss:

.btn{

margin-top: 10rpx;

}

index.js:

//录音管理

const recorderManager = wx.getRecorderManager()

//音频组件控制

const innerAudioContext = wx.createInnerAudioContext()

var tempFilePath;

Page({

data: {

},

//开始录音的时候

start: function () {

const options = {

duration: 10000,//指定录音的时长,单位 ms

sampleRate: 16000,//采样率

numberOfChannels: 1,//录音通道数

encodeBitRate: 96000,//编码码率

format: 'mp3',//音频格式,有效值 aac/mp3

frameSize: 50,//指定帧大小,单位 KB

}

//开始录音

recorderManager.start(options);

recorderManager.onStart(() => {

console.log('recorder start')

});

//错误回调

recorderManager.onError((res) => {

console.log(res);

})

},

//暂停录音

pause: function () {

recorderManager.onPause();

console.log('暂停录音')

},

//停止录音

stop: function () {

recorderManager.stop();

recorderManager.onStop((res) => {

this.tempFilePath = res.tempFilePath;

console.log('停止录音', res.tempFilePath)

const { tempFilePath } = res

})

},

//播放声音

play: function () {

innerAudioContext.autoplay = true

innerAudioContext.src = this.tempFilePath,

innerAudioContext.onPlay(() => {

console.log('开始播放')

})

innerAudioContext.onError((res) => {

console.log(res.errMsg)

console.log(res.errCode)

})

},

//上传录音

upload:function(){

wx.uploadFile({

url: "https://xxx.com/fileUpload",//演示域名、自行配置

filePath: this.tempFilePath,

name: 'file',

header: {

"Content-Type": "multipart/form-data"

},

formData:

{

userId: 12345678 //附加信息为用户ID

},

success: function (res) {

console.log(res);

wx.showToast({

title: '上传成功',

icon: 'success',

duration: 2000

})

},

fail: function (res) {

console.log(res);

},

complete: function (res) {

}

})

},

onLoad: function () {

},

})

上传服务

/**

* 口语测试

* 创建者 柒

* 创建时间 2018年3月13日

*/

@Api(tags ="口语测试接口")

@RestController

@RequestMapping("/test")

public class TestController {

private final static Logger LOGGER = LoggerFactory.getLogger(WechatController.class);

@Value("${web.upload.path}")

private String uploadPath;

@ApiOperation(value="上传文件(小程序)")

@PostMapping("/fileUpload")

public String upload(HttpServletRequest request, @RequestParam("file")MultipartFile[] files){

LOGGER.info("上传测试");

//多文件上传

if(files!=null && files.length>=1) {

BufferedOutputStream bw = null;

try {

String fileName = files[0].getOriginalFilename();

//判断是否有文件(实际生产中要判断是否是音频文件)

if(StringUtils.isNoneBlank(fileName)) {

//创建输出文件对象

File outFile = new File(uploadPath + UUID.randomUUID().toString()+ FileUtil.getFileType(fileName));

//拷贝文件到输出文件对象

FileUtils.copyInputStreamToFile(files[0].getInputStream(), outFile);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if(bw!=null) {bw.close();}

} catch (IOException e) {

e.printStackTrace();

}

}

}

return "success";

}

}

上传声音 微信小程序_SpringBoot开发案例之微信小程序录音上传相关推荐

  1. 微信小程序|基于小程序+云开发制作一个菜谱小程序

    今天吃什么?这是一个让强迫症左右为难的问题,跟随此文基于小程序+云开发制作一个菜谱小程序,根据现有食材一键生成菜谱,省心又省力. 一.小程序 1. 创建小程序

  2. 如何在微信公众帐号开发模式下,通过程序代码向用户发送符号表情。

    本文重点介绍如何在微信公众帐号开发模式下,通过程序代码向用户发送符号表情.部分代码来自:FreeEIM 至于如何识别用户发送的是符号表情,就不在此讲解了,留给大家一点学习思考的空间.我只是给大家一个提 ...

  3. 如何在微信公众帐号开发模式下,通过程序代码向用户发送符号表情

    本文重点介绍如何在微信公众帐号开发模式下,通过程序代码向用户发送符号表情.部分代码来自:FreeEIM 至于如何识别用户发送的是符号表情,就不在此讲解了,留给大家一点学习思考的空间.我只是给大家一个提 ...

  4. 个人微信号二次开发sdk协议,微信个人号开发API接口

    个人微信号二次开发sdk协议,微信个人号开发API接口 微信SDK程序概要说明 个人微信号开发sdk非微信ipad协议.非mac协议,非安卓协议,api可实现微信99%功能: 无需扫码登录.可收发朋友 ...

  5. 微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片

    微信公众号H5开发,在微信浏览器打开H5,无法一键下载图片 背景 解决方案 文章参考 背景 微信公众号H5开发,在普通浏览器,可以直接通过以下代码下载图片: let a = document.crea ...

  6. 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单

    微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单  技术qq交流群:JavaDream:251572072 ...

  7. 企业微信SCRM系统部署_企业微信SCRM二次开发_企业微信SCRM系统独立版源码价格

    企业微信SCRM系统部署_企业微信SCRM二次开发_企业微信SCRM系统独立版源码价格 点趣互动是企业微信系统的第三方应用提供厂商,用于管理员工企业微信的内一款系统软件.点趣互动企业微信scrm软件主 ...

  8. 微信小程序云开发---vant组件 van-uploader 实现视频文件上传到云存储,发动态功能

    pages/upVideo.wxml //获取用户的头像和昵称展示 <view class="headerBox"><image src="{{user ...

  9. 微信小程序云开发项目——多肉植物销售小程序

    前言 此项目为本人在大学的毕业设计作品,基于微信小程序云开发技术进行开发,暂未商用和托管.编写文章意在为求职做准备,亦乐于与大家进行经验交流分享,欢迎进行评论咨询哦. 简介 用户角色分为:一般顾客.商 ...

最新文章

  1. linux+输出分页,是否可以在zsh中自动分页输出?
  2. OSChina 周三乱弹 ——是不是兄弟?是兄弟就帮我解决下!
  3. .NET 6 攻略大全(二)
  4. spring boot redis 分布式锁
  5. 怎么在linux终端上sed,Linux中如何使用sed命令
  6. NewBeeNLP 年中 | From NewBee To NB
  7. Ios精品源码,扁平化的ActionSheet仿花椒截屏demo文件签名重叠卡片滚动汽车仪表盘...
  8. php 不恒等,php运算符==怎么使用以及与===恒等的区别是什么?
  9. linux下下载文件到谷歌云盘,如何使用wget下载谷歌云端硬盘里的文件
  10. 一起学英语 | 用JavaScript实现数字阶乘的三种方法
  11. 计算机英语拼读法,常用计算机英语词汇:CPU
  12. Win10升级要卸载virtualbox virtualbox怎么办
  13. Java实现N元一次方程组求解
  14. My Eighty-first Page - 打家劫舍 - By Nicolas
  15. JavaScript完成知乎页面
  16. 用树莓派做一个实时垃圾分类器|超实用!!
  17. 计算机网络水晶头博客,两台电脑组成局域网(交叉线)的水晶头制作详解
  18. maven联网下载依赖时,在中央仓库找不到要下载的依赖
  19. 【毕业设计】大数据电商销售预测分析 - python 数据分析
  20. 世坤投资大学:欲提供数据科学硕士学位的对冲基金

热门文章

  1. 走捷径修Bug却引起全球大宕机,Salesforce哭着处理了“肇事”工程师
  2. 新年快乐,送一台新款华为笔记本!
  3. Mobvista首席架构师蔡超:工作感悟之失败与成功,我的8点总结
  4. 卖身字节跳动的互动百科或被改名
  5. Java实现图片压缩代码,图片大小转换
  6. 简单实现Popup弹出框添加数据
  7. 最简单的EasyUI菜单栏
  8. ORA-01919: role 'OLAPI_TRACE_USER' does not exist
  9. linux与windows查看占用端口的进程ID并杀死进程
  10. maven的Windows环境下安装配置