JavaScript中播放路径含%的音频文件失败问题求助
解决包含%的音频文件播放问题
问题核心是URL对%的解析逻辑:浏览器会把URL中的%当作编码标识符,比如你写的%32会被自动解析成字符2,所以<audio src="test%320.mp3">实际请求的是test20.mp3,自然找不到原文件。
下面分两种场景给出解决方案:
静态HTML直接写标签
把文件名里的%手动替换成%25(这是%的URL编码值),比如原文件名是test%320.mp3,修改后的代码:
<audio src="test%25320.mp3" controls></audio>
动态JS生成src的场景
用encodeURIComponent对完整的原始文件名编码,不要对已经部分编码的字符串操作。示例代码:
// 原始文件名(和本地实际文件名完全一致的字符串) const rawFileName = 'test%320.mp3'; // 对整个文件名进行URL编码 const encodedFileName = encodeURIComponent(rawFileName); // 给audio标签设置处理后的src document.querySelector('audio').src = encodedFileName;
编码后test%320.mp3会转换成test%25320.mp3,和手动修改的结果一致,浏览器就能正确识别文件名里的%了。
内容的提问来源于stack exchange,提问作者miranto randriamampianina
相关产品推荐
相关产品推荐

