Node.js中将base64音频保存到本地文件夹后mp3无法播放如何解决
问题排查与修复方案
核心问题原因
- 未剥离Base64的Data URI前缀:你传入的
base64File开头的data:audio/mp3;base64,是Data URI协议的标识头,不属于音频本身的Base64编码内容,直接传入Buffer.from转换会生成错误的文件头,导致MP3文件无法被播放器识别。 - 变量名拼写错误:代码中定义的文件名为
filename,但后续拼接路径、打印日志时误写为filetname(多了字母t),可能导致文件存储路径不符合预期。
修复后代码
const fs = require('fs'); let base64File = 'data:audio/mp3;base64,UklGRiRAHwBXQVZFZm10IBAAAAABAAIAgLsAAAD...........'; const DIR = BASE_PATH + 'src/storage/voice/'; const filename = 'sample.mp3'; const fileurl = DIR + filename; // 先剥离Data URI前缀,仅保留音频对应的纯Base64内容 const base64Data = base64File.replace(/^data:audio\/\w+;base64,/, ''); const fileContents = Buffer.from(base64Data, 'base64'); // 提前校验目录是否存在,不存在则自动创建,避免目录缺失导致写入异常 if (!fs.existsSync(DIR)) { fs.mkdirSync(DIR, { recursive: true }); } fs.writeFile(fileurl, fileContents, (err) => { if (err) return console.error(err); console.log('file saved to ', filename); });
内容的提问来源于stack exchange,提问作者Rugma
相关产品推荐
相关产品推荐

