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

Win10 Edge 122中chrome.downloads.download保存路径异常求解决办法

Edge扩展下载对话框默认路径异常问题解决方案

问题确认

确实有不少开发者在Windows更新或Edge版本迭代后遇到类似问题:原本chrome.downloads.download唤起的“另存为”对话框会默认打开上次保存的目录,但更新后直接跳转到浏览器默认下载目录。这大概率是系统或浏览器层面的行为逻辑调整,而非扩展API本身的参数失效。

关于chrome.downloads.download的参数说明

目前Chrome/Edge的downloads.downloadAPI没有直接指定“另存为”对话框初始路径的参数,对话框的初始位置通常由浏览器的历史记录、系统文件对话框的默认行为共同控制。但可以通过以下间接方式引导对话框打开到目标目录:

方案1:利用filename参数拼接历史路径

通过扩展存储记录用户上次的下载目录,下次调用download时将filename设置为“历史目录+文件名”的组合,浏览器会优先尝试打开该目录。

修改你的background.js,添加存储和读取历史路径的逻辑:

// 监听下载完成事件,记录上次保存目录
chrome.downloads.onChanged.addListener((downloadDelta) => {
  if (downloadDelta.state?.current === 'complete') {
    chrome.downloads.search({ id: downloadDelta.id }, (items) => {
      if (items.length > 0) {
        const fullPath = items[0].filename;
        // 拆分路径和文件名,Windows用\\,其他系统用/
        const pathSeparator = navigator.platform.includes('Win') ? '\\' : '/';
        const lastDir = fullPath.substring(0, fullPath.lastIndexOf(pathSeparator));
        chrome.storage.local.set({ lastDownloadDir: lastDir }, () => {
          console.log('已记录上次下载目录:', lastDir);
        });
      }
    });
  }
});

chrome.runtime.onMessage.addListener((request, sender) => {
  if (request.type === 'popupMessage') {
    const receivedParams = request.data;
    console.log(receivedParams);

    // 读取存储的历史目录
    chrome.storage.local.get('lastDownloadDir', (result) => {
      let filename = 'desired_filename.ext';
      if (result.lastDownloadDir) {
        const pathSeparator = navigator.platform.includes('Win') ? '\\' : '/';
        filename = `${result.lastDownloadDir}${pathSeparator}desired_filename.ext`;
      }

      chrome.downloads.download({
        url: receivedParams,
        filename: filename,
        saveAs: true
      }, (downloadId) => {
        console.log('下载已启动,ID:', downloadId);
      });
    });
  }
});

方案2:检查浏览器与系统设置

  • 打开Edge设置 → 下载 → 确认“下载前询问每个文件的保存位置”已开启;
  • 检查Windows的文件资源管理器“最近使用的文件夹”设置,确认系统允许记住最近访问路径;
  • 尝试重置Edge浏览器设置(设置 → 重置设置 → 恢复为默认值),排除配置异常导致的问题。

注意事项

  • 扩展只能访问用户之前已经授权/访问过的目录,无法强制打开未授权的系统目录;
  • 路径拼接需要区分操作系统(Windows用\\,macOS/Linux用/),避免路径失效;
  • 如果用户清除了扩展存储或历史路径失效,对话框会自动 fallback 到浏览器默认目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:51:02