uniapp实现录音及录音文件上传功能

 前提是app得实现录音拿到本地的地址

根据uniapp的官方文档来

地址:uni.getRecorderManager() | uni-app官网 (dcloud.net.cn)

先在data数据外按规定写三行代码

然后再你录音结束的事件中调官方api的方法,可以拿到本地地址

也就是onload这一块

async endRecognize(flag) {
				

				// #ifdef APP-PLUS
				plus.speech.stopRecognize();
				// #endif
				recorderManager.stop();
				return new Promise((resolve, reject) => {
					recorderManager.onStop(function(res) {
						console.log('recorder stop' + JSON.stringify(res));
						this.voicePath = res.tempFilePath;
						resolve(this.voicePath); // 当onStop触发时,解析Promise  
					}.bind(this)); // 注意这里使用bind来确保this指向Vue实例  
				}).then((voicePath) => {
					// 这里是onStop回调之后的逻辑,现在可以在这里安全地使用voicePath  
					// console.log(1111);
					// console.log(this.voicePath);
					this.sendMessage()
				}).catch((error) => {
					// 处理任何可能出现的错误  
					console.error('Error stopping recorder:', error);
				});
			},

    recorderManager.stop();就是停止录音

    recorderManager.onStop就是官方解释的录音停止的回调

    这里用的异步,如果直接赋值会拿不到当前的地址

    然后在then里面调发送方法即可

sendMessage() {
				console.log('发送东西')
			
				uploadRequest(this.voicePath, "user_voice").then(rees => {
					
					console.log(rees)
					// 直接调发送数据接口就可以了
rees就是上传到服务器的地址
					
				
				})
			},

   主要的就是上传的封装,这里也是根据uniapp的uoload的上传做的一些改动

/**
 * 文件上传公共方法
 *
 * @param image 本地图片路劲 
 * @param key 上传的类型,可问后端
 */
export const uploadRequest = (image, key) => {
	return new Promise((resolve, reject) => {
		var header = {
			"X-Access-Token": uni.getStorageSync("token")
		}
		return uni.uploadFile({
			url: baseURL + 'sys/common/upload',
			filePath: image,
			name: 'file',
			header: header,
			formData: {
				'isup': 1,
				'key': key
			},
			success: (res) => {

				let mess = JSON.parse(res.data)
				if (mess.success != true) {
					return uni.showToast({
						title: mess.message || '获取数据失败',
						icon: 'none'
					})
				}
				// 如果不满足上述判断就输出数据
				resolve(mess.message)
			},
			// 这里的接口请求,如果出现问题就输出接口请求失败
			fail: (err) => {
				console.log('uploadImage fail', err)
				reject(err)
			}
		})
	})
}

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: uniapp是一种基于Vue.js的跨平台开发框架,可以用于开发多种平台的应用程序。要实现录音上传功能,可以按照以下步骤进行操作: 1. 引入uniapp自带的音频接口api,比如uni.chooseAudio()用于选择音频文件。 2. 调用uni.chooseAudio()方法,让用户选择要上传录音文件,并获取该文件的临时路径。 3. 调用uni.uploadFile()方法,将选中的录音文件上传至服务器。在该方法中,需要提供服务器端的接口地址、文件路径、文件名称等参数。 4. 在服务器端接收上传录音文件,可以使用任何服务器端语言进行处理。根据服务器端的需求,可以保存录音文件、转码、进行语音识别等操作。 5. 在客户端展示上传结果,可以通过uni.showToast()等方法进行提示,展示上传成功或失败的消息。 需要注意的是,录音文件的上传过程可能会涉及到一些权限获取和设置,比如获取用户授权、设置录音文件格式等。可以使用uniapp提供的相关api进行操作,比如uni.getSetting()用于获取用户的授权情况,uni.authorize()用于获取录音授权。 此外,还可以使用uniapp的其他功能来增强录音上传功能,比如录音时的实时波形展示、录音进度条等。这些功能可以使用uniapp提供的组件和自定义样式来实现。 总之,通过uniapp的音频接口api和上传文件api,结合服务器端的处理,可以轻松实现录音上传功能。 ### 回答2: uni-app是一种跨平台的应用开发框架,可以在多个平台上进行应用开发,并且提供了一些内置功能模块,如录音文件上传等。 要实现录音上传功能,首先需要在uni-app项目中引入录音模块。可以使用uni-app官方提供的uni-ui库中的Recorder音频录制组件,或者使用第三方插件来实现。 一般来说,实现录音上传功能的步骤如下: 1. 在uni-app项目中安装录音插件,可以通过npm安装相关插件。 2. 在需要录音的页面中引入录音插件,并创建录音实例。 3. 配置录音参数,如录音的格式、采样率、音频质量等。 4. 在需要开始录音的时候,调用录音实例的start方法开始录音。 5. 在录音过程中,可以实时获取录音时长、音量等信息,并对录音进行处理和保存。 6. 录音完成后,调用录音实例的stop方法停止录音,并将录音文件保存到本地。 7. 将录音文件上传到服务器,可以使用uni-app提供的网络请求模块,将录音文件作为FormData进行上传。 8. 在服务器端接收录音文件,并进行处理和保存。 需要注意的是,录音文件上传都需要获取用户的授权,因此在实现录音上传功能时,还需要在uni-app项目中进行相关的权限控制。 以上是使用uni-app实现录音上传功能的大致步骤,具体的实现方式和细节可以根据具体需要进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值