微信小程序录音上传php代码,小程序实现录音上传功能
本文实例为大家分享了小程序录音上传的具体代码,供大家参考,具体内容如下
首先我们可以先看一下微信小程序的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代码,小程序实现录音上传功能相关推荐
- C++ 程序编译过程:从代码到程序
在大学课堂上学习 C++ 时,老师并没有过多涉猎 C++ 语法背后的知识.也就是说,初学 C++ 时,哪怕写出了代码,我也并不知道从代码到程序的过程中究竟发生了什么.我也曾尝试了解,但作为初学者,面对 ...
- java上传视频代码下载_java 实现视频上传
[实例简介] java上传视频转码播放的一个demo,实现java上传视频.转码.截图和播放功能 [实例截图] [核心代码] java视频上传,转码,播放实现 └── java视频上传,转码,播放实现 ...
- PHP图片上传水印代码,php上传图片并打上透明水印的代码
[www.citswd.com--热门资讯] php上传图片并打上透明水印的代码怎么做,以下是小编整理的php上传图片并打上透明水印的代码,供大家参考.就跟随百分网小编一起去了解下吧,想了解更多相关信 ...
- 计算机编程情话,[程序员的爱情表白代码]献给程序员们的爱情表白书
图片来自网络 Java程序员的情书 我能抽象出整个世界, 但是我不能抽象出你, 因为你在我心中是那么的具体, 所以我的世界并不完整. 我可以重载甚至覆盖这个世界里的任何一种方法, 但是我却不能重载对你 ...
- 微信快速开发框架V3.0--发布,代码已更新至Github 新增微店功能
版本内容 1.修正了缺少对Event.View的支持 2.增加了用户UnionID 3.新增微信小店功能 4.多客服功能 5.单元测试 什么是UnionID 我们知道,每个用户针对一个微信公众账号都有 ...
- 新浪云SAE上运行PHP代码,新浪云SAE 上使用Thinkphp5 出现问题
新浪云SAE 上使用Thinkphp5 出现问题: Warning: require(/data1/www/htdocs/996/jasoncw/1/engine/public/../thinkphp ...
- 在window上提交spark代码到远程测试环境上运行
测试代码: package sparkcore import org.apache.spark.{SparkConf, SparkContext} /** * Created by chingy ...
- 程序员女朋友礼物python代码_@程序员,用 Python 给女朋友准备个儿童节礼物可好?...
原标题:@程序员,用 Python 给女朋友准备个儿童节礼物可好? 作者 | 猿媛牧场 现在谈个恋爱.结个婚是真的炸啊.你 2.14 要送礼物,我认了,必须送啊,没有理由不送啊:3.14 白色情人节, ...
- 浪漫表白编程丨程序员的520表白代码 _ 程序员专属情人节表白网站
❤ 精彩专栏推荐
最新文章
- python isdigit()
- [收藏]整理了一些T-SQL技巧
- [浪风推荐]php的memcache应用入门教程
- Tomcat URL重写
- 视频编解码(十八):编解码linux测试步骤
- 系统学习深度学习(十三)--Batch Normalization
- java中的轻重量级组件_java Swing AWT 轻量级组建 和 重量级组件
- 炫炫炫的十六进制编辑器
- php解析视频_YY神曲视频PHP解析调用代码
- 浅析硬件构造Tone mapping曲线
- 电脑连接android手机测试,Android系统手机通过USB连接电脑上网
- 大学离散数学作业用代码怎么写?用Python判断离散数学的自反、对称、传递、符合、自反闭包、函数及其类型直接上代码配超详细注释以及源码下载地址 =_= python大学任务
- xy苹果助手未受信任_经过苹果企业签名的应用该如何安装
- 腾讯云开放mysql端口_腾讯云服务器Mysql开启3306端口远程访问
- Java基础 DAY05
- Raft 共识算法1-Raft基础
- OPPO R8107刷机包下载_OPPO R8107密码忘记了?点击进来搞定
- 学环境工程我后悔了_环境工程学出来能干啥
- linux 命令 置顶,[置顶] Linux命令惯用法
- 广度优先搜索算法带图详解