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

如何通过FileSystem API从网站打开网络驱动器文件夹并设为默认路径

能否通过FileSystem API将网络共享驱动器设为文件选择器默认起始位置?

答案是可以,但有严格的安全限制,无法直接硬编码路径实现,具体细节如下:

  • 首先明确:FileSystem API的showOpenFilePicker/showDirectoryPicker方法支持startIn参数指定起始位置,但不能直接传入UNC路径(比如\\server\share)或映射驱动器号(比如Z:\)——浏览器出于安全考虑,禁止网页直接访问未授权的本地/网络文件系统路径。

  • 可行的实现步骤:

    1. 首次打开时,必须让用户手动选择一次目标网络共享文件夹,完成授权。
    2. 将用户授权后的文件系统句柄(DirectoryHandle)存储到本地(比如localStorage)。
    3. 后续调用文件选择器时,将存储的句柄作为startIn参数传入,就能直接从该网络共享目录打开窗口。
  • 示例代码:

    // 首次授权并存储句柄
    async function setupDefaultNetworkDir() {
      const dirHandle = await window.showDirectoryPicker();
      // 存储句柄的序列化值
      localStorage.setItem('authorizedNetworkDir', JSON.stringify(await dirHandle.toString()));
    }
    
    // 后续打开文件选择器时使用默认目录
    async function openFilePicker() {
      const storedHandleStr = localStorage.getItem('authorizedNetworkDir');
      let dirHandle;
    
      if (storedHandleStr) {
        // 从存储的句柄启动选择器
        dirHandle = await window.showDirectoryPicker({
          startIn: storedHandleStr
        });
      } else {
        // 首次打开,引导用户授权
        dirHandle = await window.showDirectoryPicker();
        localStorage.setItem('authorizedNetworkDir', JSON.stringify(await dirHandle.toString()));
      }
    
      // 处理选中的目录逻辑
      console.log('选中的目录:', dirHandle.name);
    }
    
  • 额外注意事项:

    • 这个特性目前在Chrome、Edge等Chromium内核浏览器中支持较好,Safari的支持度有限,需要做兼容性测试。
    • 存储的句柄有效期依赖浏览器的存储策略,如果用户清除了浏览器数据,需要重新授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:37:07