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


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 相关文章推荐
一段实时更新的时间代码
Jul 07 Javascript
破除一些网站复制、右键限制
Nov 04 Javascript
js 取时间差去掉周六周日实现代码
Dec 25 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
Dec 01 Javascript
JavaScript中通过提示框跳转页面的方法
Feb 14 Javascript
jQuery无刷新上传之uploadify3.1简单使用
Jun 18 Javascript
详解node单线程实现高并发原理与node异步I/O
Sep 21 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
Oct 02 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 Javascript
vue实现给div绑定keyup的enter事件
Jul 31 Javascript
uniapp 微信小程序 自定义tabBar 导航
Apr 22 Javascript
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的FTP学习(一)[转自奥索]
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
php查询ip所在地的方法
2014/12/05 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
2016/03/07 PHP
thinkphp3.x中变量的获取和过滤方法详解
2016/05/20 PHP
thinkPHP模板中函数的使用方法示例
2016/11/30 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
PHP rsa加密解密算法原理解析
2020/12/09 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题分析
2007/08/12 Javascript
jquery 操作DOM的基本用法分享
2012/04/05 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
bootstrap datetimepicker控件位置异常的解决方法
2017/11/23 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
Vue-axios-post数据后端接不到问题解决
2020/01/09 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
python接口自动化(十六)--参数关联接口后传(详解)
2019/04/16 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
电子商务专业求职信
2014/03/08 职场文书
留学顾问岗位职责
2014/04/14 职场文书
商铺门面租房协议书
2014/10/21 职场文书
学习党的群众路线教育实践活动心得体会范文
2014/11/03 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
婚礼家长致辞
2015/07/27 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书