You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Chrome扩展下载空MP3文件时的网络错误问题

解决Chrome扩展下载空MP3失败的问题

你当前使用的空data URI data:application/mp3 因无有效数据,被Chrome下载机制判定为无效资源,进而触发"Failed - Network error"错误。以下是两种可行的解决方案:

方案一:使用最小合法MP3的Data URI

使用一个经过base64编码的最小合法0秒MP3文件作为数据源,该文件符合MP3格式规范,可被Chrome正常下载,后续外部应用覆盖文件也不受影响。

修改后的代码:

function download(title) {
  return new Promise(resolve => {
    // 最小合法MP3的base64编码
    const minimalMp3DataUri = "data:audio/mpeg;base64,SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU4LjY2LjEwMAAAAAAAAAAAAAAAAOfn57/iQAAAAEAAADbgAAAAEAAAAHAAADAA==";
    chrome.downloads.download({
      url: minimalMp3DataUri,
      filename: `${title}.mp3`,
      saveAs: true
    }, resolve);
  });
}

方案二:使用Blob与Object URL

通过创建空Blob对象并指定正确的MIME类型,生成临时Object URL供下载使用。这种方式更轻量化,无需额外的base64数据,仅需占位文件时优先选择。

修改后的代码:

function download(title) {
  return new Promise(resolve => {
    // 创建空Blob,指定audio/mpeg类型
    const blob = new Blob([], { type: "audio/mpeg" });
    const url = URL.createObjectURL(blob);
    
    chrome.downloads.download({
      url: url,
      filename: `${title}.mp3`,
      saveAs: true
    }, (downloadId) => {
      resolve(downloadId);
      // 下载完成后释放临时URL,避免内存泄漏
      URL.revokeObjectURL(url);
    });
  });
}

两种方案均可解决下载失败问题:若需要文件本身为合法MP3格式,选方案一;仅需占位文件时,方案二更高效。

内容的提问来源于stack exchange,提问作者Batimius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 05:47:36