+
105
-

回答

使用plus.io.resolveLocalFileSystemURL

<template>
    <view>
        <button @click="startRecord">开始录音</button>
        <button @click="stopRecord">停止录音</button>
    </view>
</template>

<script>
export default {
    data() {
        return {
            recorderManager: null,
            tempFilePath: ''
        };
    },
    onLoad() {
        // 获取录音管理器实例
        this.recorderManager = uni.getRecorderManager();

        // 监听录音停止事件
        this.recorderManager.onStop((res) => {
            console.log('录音停止,文件路径:', res.tempFilePath);
            this.tempFilePath = res.tempFilePath;
            this.convertToBase64(res.tempFilePath);
        });
    },
    methods: {
        // 开始录音方法
        startRecord() {
            const options = {
                format: 'mp3' // 录音格式,这里选择 mp3
            };
            this.recorderManager.start(options);
            console.log('开始录音');
        },
        // 停止录音方法
        stopRecord() {
            this.recorderManager.stop();
            console.log('停止录音');
        },
        // 将录音文件转换为 Base64 编码字符串的方法
        convertToBase64(filePath) {
            // 将 UniApp 路径转换为 5+ 路径
            const plusPath = '_doc' + filePath.split('_doc')[1];
            plus.io.resolveLocalFileSystemURL(plusPath, (entry) => {
                entry.file((file) => {
                    const reader = new plus.io.FileReader();
                    reader.readAsDataURL(file);
                    reader.onload = (e) => {
                        const base64Data = e.target.result.split(',')[1];
                        console.log('Base64 编码字符串:', base64Data);
                        // 在这里可以对 Base64 编码字符串进行进一步处理
                    };
                    reader.onerror = (err) => {
                        console.error('读取文件失败:', err);
                    };
                }, (err) => {
                    console.error('获取文件失败:', err);
                });
            }, (err) => {
                console.error('解析文件路径失败:', err);
            });
        }
    }
};
</script>

网友回复

我知道答案,我要回答