Node.js如何将Base64字符串写入文件?文件大小异常问题排查
问题排查与解决:Base64视频转文件仅20字节
核心原因
生成的文件仅20字节,说明Buffer.from(mergedData, "base64")解码出的内容几乎为空,本质是输入的Base64字符串格式不符合规范。
具体排查与修复步骤
- 移除Base64前缀:如果
mergedData包含data:video/mp4;base64,这类Data URI前缀,必须先剔除,否则解码会失败:mergedData = mergedData.replace(/^data:video\/mp4;base64,/, ''); - 清理无效字符:Base64仅允许A-Z、a-z、0-9、+、/、=这些字符,若字符串里有空格、换行或其他冗余字符,会导致解码中断,用正则清理:
mergedData = mergedData.replace(/[^A-Za-z0-9+/=]/g, ''); - 验证Base64完整性:若上述操作后仍无效,截取
mergedData的前一段内容,用本地命令(如echo "截取的字符串" | base64 -d)测试解码,确认原始Base64本身是否完整有效。
修复后的完整代码示例
const fs = require('fs'); let outputFileName = "myfile.mp4"; let mergedData = "BASE64 DATA GOES HERE"; // 预处理Base64字符串 mergedData = mergedData.replace(/^data:video\/mp4;base64,/, '').replace(/[^A-Za-z0-9+/=]/g, ''); let decodeData = Buffer.from(mergedData, "base64"); fs.writeFileSync(outputFileName, decodeData);
内容的提问来源于stack exchange,提问作者X3R0
相关产品推荐
相关产品推荐

