小程序采集录音并上传到后台


Posted in Javascript onNovember 22, 2019

本文实例为大家分享了小程序录音上传的具体代码,供大家参考,具体内容如下

demo.wxml

<view>
 <button bindtap='startRecordMp3' type='primary'>录音开始(mp3)</button>
</view>
<view>
 <button bindtap='stopRecord' type='primary'>录音结束</button>
</view>
<view>
 <button bindtap='playRecord' type='primary'>播放录音</button>
</view>
<view>
 <button bindtap='sendRecord' type='primary'>播放录音</button>
</view>

demo.wxss

view{
 padding: 15px;
}

demo.js

// pages/newMusic/index.js
const recorderManager = wx.getRecorderManager();
Page({

  data: {
    
  },

  /**
  * 提示
  */
  tip: function (msg) {
    wx.showModal({
      title: '提示',
      content: msg,
      showCancel: false
    })
  }

  /**
   * 录制mp3音频
  */
  , startRecordMp3: function () {
    recorderManager.start({
      format: 'mp3'
    });
  }

  /**
   * 停止录音
   */
  , stopRecord: function () {
    recorderManager.stop()
  }

  /**
   * 播放录音
   */
  , playRecord: function () {
    var that = this;
    var src = this.data.src;
    if (src == '') {
      this.tip("请先录音!")
      return;
    }
    this.innerAudioContext.src = this.data.src;
    this.innerAudioContext.play()
  },

  onLoad: function (options) {
    var that = this;
    recorderManager.onError(function () {
      that.tip("录音失败!")
    });
    recorderManager.onStop(function (res) {
      that.setData({
        src: res.tempFilePath
      })
      console.log(res.tempFilePath)
      that.tip("录音完成!")
    });

    this.innerAudioContext = wx.createInnerAudioContext();
    this.innerAudioContext.onError((res) => {
      that.tip("播放录音失败!")
    })

  }

})

java后台接收

package com.azor.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import com.azor.utils.HttpAPIService;

import ch.qos.logback.classic.Logger;
import net.sf.json.JSONObject;

@RestController
@RequestMapping("/base_voice")
public class BaseController {
 
 private static final Logger logger = (Logger) LoggerFactory.getLogger(BaseController.class);
 private static String lineSeparator = System.getProperty("line.separator");
 
 @Autowired
 protected Environment env;
 
 @Autowired
 protected HttpAPIService httpAPIService;
 
 /** 上传文件保存路径 */
 private final String FILE_SAVE_PATH = "D:/photo/jac_hr_miniprogram_file/";

 /** 主业务数据Map */
 protected Map<String, Object> dataMap = new HashMap<>();
 
 /** HTTP POST 请求Map */
 protected Map<String, Object> postMap = new HashMap<>();
 
 @RequestMapping("/file_upload")
 public void saveFile(HttpServletRequest request, String url) throws Exception {
 logger.info("文件上传开始" + lineSeparator);
 // 1.获取从前台传过来得图片
 MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
 MultipartFile multipartFile = req.getFile("file");
 
 // 2.获得文件扩展名
 String extOfFile = getExtOfFile(multipartFile);
 // 3.保存到本地
 BufferedOutputStream bos = null;
 String filename = null;
 try {
  File dir = new File(file_save_path);
  if (!dir.exists()) {// 判断文件目录是否存在
  dir.mkdirs();
  }
  filename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + (int) (Math.random() * 1000) + "."
   + extOfFile;
  bos = new BufferedOutputStream(new FileOutputStream(file_save_path + filename));
  bos.write(multipartFile.getBytes());

 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  if (bos != null) {
  try {
   bos.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
  }

 }
 
 }
 
 public String getExtOfFile(MultipartFile multipartFile) {
 // 获取文件的 名称.扩展名
 String oldName = multipartFile.getOriginalFilename();
 String extensionName = "";
 // 获取原来的扩展名
 if ((oldName != null) && (oldName.length() > 0)) {
  int dot = oldName.lastIndexOf('.');
  if ((dot > -1) && (dot < (oldName.length() - 1))) {
  extensionName = oldName.substring(dot+1);
  }
 }
 return extensionName;
 }
}

效果

小程序采集录音并上传到后台

小程序采集录音并上传到后台

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
最近项目写了一些js,水平有待提高
Jan 31 Javascript
javascript放大镜效果的简单实现
Dec 09 Javascript
可插入图片的TEXT文本框
Dec 27 Javascript
基于jquery的simpleValidate简易验证插件
Jan 31 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
理解和运用JavaScript的闭包机制
Aug 13 Javascript
bootstrap侧边栏圆点导航
Jan 11 Javascript
基于Vue实例对象的数据选项
Aug 09 Javascript
vue组件中使用iframe元素的示例代码
Dec 13 Javascript
JavaScript变量声明var,let.const及区别浅析
Apr 23 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
Aug 29 Javascript
jQuery实现表格隔行换色
Sep 01 jQuery
webpack优化之代码分割与公共代码提取详解
Nov 22 #Javascript
小程序实现录音上传功能
Nov 22 #Javascript
vue使用recorder.js实现录音功能
Nov 22 #Javascript
微信小程序开发摇一摇功能
Nov 22 #Javascript
js实现录音上传功能
Nov 22 #Javascript
解决vue自定义全局消息框组件问题
Nov 22 #Javascript
JavaScript实现省市联动效果
Nov 22 #Javascript
You might like
用PHP调用数据库的存贮过程!
2006/10/09 PHP
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
javascript实现获取浏览器版本、操作系统类型
2015/01/29 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
细数JavaScript 一个等号,两个等号,三个等号的区别
2016/10/09 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
js事件冒泡与事件捕获详解
2017/02/20 Javascript
layer子层给父层页面元素赋值,以达到向父层页面传值的效果实例
2017/09/22 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
[42:36]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第二局
2016/02/26 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Windows下安装python2和python3多版本教程
2017/03/30 Python
Django中多种重定向方法使用详解
2019/07/17 Python
Python+AutoIt实现界面工具开发过程详解
2019/08/07 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
python实现图片转字符画
2021/02/19 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
SQL面试题
2013/04/30 面试题
在校生党员自我评价
2013/09/25 职场文书
文秘个人求职信范文
2014/04/22 职场文书
集体生日活动方案
2014/08/18 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
军训个人总结
2015/03/03 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
职工宿舍管理制度
2015/08/05 职场文书
党员观看《筑梦中国》心得体会
2016/01/18 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python