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

首先我们可以先看一下微信小程序的API

这里有关于小程序录音的一些基本配置

index.wxml:

index.wxss:

.topicRecording {

float: left;

width: 40%;

height: 100%;

position: relative;

}

.progress_box {

width: 130rpx;

height: 130rpx;

margin-left: -65rpx;

position: absolute;

bottom: 0;

left: 50%;

display: flex;

align-items: center;

justify-content: center;

background: #ccc;

border-radius: 50%;

}

.progress_bgs {

width: 114rpx;

height: 114rpx;

background: #fff;

border-radius: 50%;

margin: 9rpx;

}

.progress_bg {

width: 106rpx;

height: 106rpx;

margin: 5rpx;

position: absolute;

background: #444;

border-radius: 50%;

}

.progress_img {

width: 82rpx;

height: 82rpx;

border-radius: 50%;

margin: 12rpx;

}

index.js:

Page({

data: {

openRecordingdis: "block",//录音图片的不同

shutRecordingdis: "none",//录音图片的不同

recordingTimeqwe:0,//录音计时

setInter:""//录音名称

},

//录音计时器

recordingTimer:function(){

var that = this;

//将计时器赋值给setInter

that.data.setInter = setInterval(

function () {

var time = that.data.recordingTimeqwe + 1;

that.setData({

recordingTimeqwe: time

})

}

, 1000);

},

//开始录音

openRecording: function() {

var that = this;

wx.getSystemInfo({

success: function(res) {

that.setData({

shutRecordingdis: "block",

openRecordingdis: "none"

})

}

})

const options = {

duration: 60000, //指定录音的时长,单位 ms,最大为10分钟(600000),默认为1分钟(60000)

sampleRate: 16000, //采样率

numberOfChannels: 1, //录音通道数

encodeBitRate: 96000, //编码码率

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

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

}

//开始录音计时

that.recordingTimer();

//开始录音

recorderManager.start(options);

recorderManager.onStart(() => {

console.log('。。。开始录音。。。')

});

//错误回调

recorderManager.onError((res) => {

console.log(res);

})

},

//结束录音

shutRecording: function() {

var that = this;

wx.getSystemInfo({

success: function(res) {

that.setData({

shutRecordingdis: "none",

openRecordingdis: "block"

})

}

})

recorderManager.stop();

recorderManager.onStop((res) => {

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

const {tempFilePath} = res;

//结束录音计时

clearInterval(that.data.setInter);

//上传录音

wx.uploadFile({

url: appURL + '/wx_SubjectInformation/wx_SubjectRecordKeeping.do',//这是你自己后台的连接

filePath: tempFilePath,

name:"file",//后台要绑定的名称

header: {

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

},

//参数绑定

formData:{

recordingtime: that.data.recordingTimeqwe,

topicid: that.data.topicid,

userid:1,

praisepoints:0

},

success:function(ress){

console.log(res);

wx.showToast({

title: '保存完成',

icon:'success',

duration:2000

})

},

fail: function(ress){

console.log("。。录音保存失败。。");

}

})

})

},

//录音播放

recordingAndPlaying: function(eve) {

wx.playBackgroundAudio({

//播放地址

dataUrl: '' + eve.currentTarget.dataset.gid + ''

})

},

})

上传服务

@RequestMapping(value = "/wx_SubjectRecordKeeping", produces = "application/json")

@ResponseBody

public Object wx_SubjectRecordKeeping(HttpServletRequest request,

@RequestParam("file") MultipartFile files, String recordingtime,

int topicid,int userid,int praisepoints) {

// 构建上传目录路径

// request.getServletContext().getRealPath("/upload");

String uploadPath = 你自己保存音频的URL;

// 如果目录不存在就创建

File uploadDir = new File(uploadPath);

if (!uploadDir.exists()) {

uploadDir.mkdir();

}

// 获取文件的 名称.扩展名

String oldName = files.getOriginalFilename();

String extensionName = "";

// 获取原来的扩展名

if ((oldName != null) && (oldName.length() > 0)) {

int dot = oldName.lastIndexOf('.');

if ((dot > -1) && (dot < (oldName.length() - 1))) {

extensionName = oldName.substring(dot);

}

}

// 构建文件名称

String fileName = System.currentTimeMillis() + "_" + System.nanoTime()

+ extensionName;

// 获取

String[] fileType = { ".CD", ".WAVE", ".AIFF", ".AU", ".MPEG", ".MP3",

".MPEG-4", ".MIDI", ".WMA", ".RealAudio", ".VQF", ".OggVorbis",

".AMR" };

List fileTyepLists = Arrays.asList(fileType);

int fileTypeOnCount = 0;

for (String fileTyepListss : fileTyepLists) {

if (fileTyepListss.equalsIgnoreCase(extensionName)) {

// -----如果是音频文件的话

// 构建文件路径

String filePath = uploadPath + File.separator + fileName;

// 保存文件

try {

FileUtils.writeByteArrayToFile(new File(filePath),

files.getBytes());

} catch (Exception e) {

e.printStackTrace();

}

} else {

fileTypeOnCount++;

}

}

if (fileTypeOnCount == fileTyepLists.size()) {

// 不是音频文件

return false;

}

return false;

}

效果图

点击开始录音、录完后点击结束录音

录音成功后的返回

录制的音频文件

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

微信小程序录音上传php代码,小程序实现录音上传功能相关推荐

  1. C++ 程序编译过程:从代码到程序

    在大学课堂上学习 C++ 时,老师并没有过多涉猎 C++ 语法背后的知识.也就是说,初学 C++ 时,哪怕写出了代码,我也并不知道从代码到程序的过程中究竟发生了什么.我也曾尝试了解,但作为初学者,面对 ...

  2. java上传视频代码下载_java 实现视频上传

    [实例简介] java上传视频转码播放的一个demo,实现java上传视频.转码.截图和播放功能 [实例截图] [核心代码] java视频上传,转码,播放实现 └── java视频上传,转码,播放实现 ...

  3. PHP图片上传水印代码,php上传图片并打上透明水印的代码

    [www.citswd.com--热门资讯] php上传图片并打上透明水印的代码怎么做,以下是小编整理的php上传图片并打上透明水印的代码,供大家参考.就跟随百分网小编一起去了解下吧,想了解更多相关信 ...

  4. 计算机编程情话,[程序员的爱情表白代码]献给程序员们的爱情表白书

    图片来自网络 Java程序员的情书 我能抽象出整个世界, 但是我不能抽象出你, 因为你在我心中是那么的具体, 所以我的世界并不完整. 我可以重载甚至覆盖这个世界里的任何一种方法, 但是我却不能重载对你 ...

  5. 微信快速开发框架V3.0--发布,代码已更新至Github 新增微店功能

    版本内容 1.修正了缺少对Event.View的支持 2.增加了用户UnionID 3.新增微信小店功能 4.多客服功能 5.单元测试 什么是UnionID 我们知道,每个用户针对一个微信公众账号都有 ...

  6. 新浪云SAE上运行PHP代码,新浪云SAE 上使用Thinkphp5 出现问题

    新浪云SAE 上使用Thinkphp5 出现问题: Warning: require(/data1/www/htdocs/996/jasoncw/1/engine/public/../thinkphp ...

  7. 在window上提交spark代码到远程测试环境上运行

    测试代码: package sparkcore import org.apache.spark.{SparkConf, SparkContext} /**   * Created by chingy  ...

  8. 程序员女朋友礼物python代码_@程序员,用 Python 给女朋友准备个儿童节礼物可好?...

    原标题:@程序员,用 Python 给女朋友准备个儿童节礼物可好? 作者 | 猿媛牧场 现在谈个恋爱.结个婚是真的炸啊.你 2.14 要送礼物,我认了,必须送啊,没有理由不送啊:3.14 白色情人节, ...

  9. 浪漫表白编程丨程序员的520表白代码 _ 程序员专属情人节表白网站

    ❤ 精彩专栏推荐

最新文章

  1. python isdigit()
  2. [收藏]整理了一些T-SQL技巧
  3. [浪风推荐]php的memcache应用入门教程
  4. Tomcat URL重写
  5. 视频编解码(十八):编解码linux测试步骤
  6. 系统学习深度学习(十三)--Batch Normalization
  7. java中的轻重量级组件_java Swing AWT 轻量级组建 和 重量级组件
  8. 炫炫炫的十六进制编辑器
  9. php解析视频_YY神曲视频PHP解析调用代码
  10. 浅析硬件构造Tone mapping曲线
  11. 电脑连接android手机测试,Android系统手机通过USB连接电脑上网
  12. 大学离散数学作业用代码怎么写?用Python判断离散数学的自反、对称、传递、符合、自反闭包、函数及其类型直接上代码配超详细注释以及源码下载地址 =_= python大学任务
  13. xy苹果助手未受信任_经过苹果企业签名的应用该如何安装
  14. 腾讯云开放mysql端口_腾讯云服务器Mysql开启3306端口远程访问
  15. Java基础 DAY05
  16. Raft 共识算法1-Raft基础
  17. OPPO R8107刷机包下载_OPPO R8107密码忘记了?点击进来搞定
  18. 学环境工程我后悔了_环境工程学出来能干啥
  19. linux 命令 置顶,[置顶] Linux命令惯用法
  20. 广度优先搜索算法带图详解

热门文章

  1. word 禁用dtd_如何在Word 2013中禁用屏幕提示
  2. 计算机二级试题第12套,计算机等级考试二级VFP机试试题12
  3. ros功能包和机器人
  4. 威纶通easybuilder pro触摸屏在线仿真与modsim虚拟从站通讯
  5. 连续六年稳居中国SDN(软件)市场份额第一
  6. 将pcap文件处理成KDD99数据集格式
  7. 普通人的2022前端秋招总结
  8. 作为程序员,你真的刻意练习了吗
  9. 建筑施工技术【16】
  10. excel如何去重?