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

Angular中如何获取文件夹内文件的绝对路径并保存为字符串

无法获取本地文件夹绝对路径的原因及替代方案

你用<input webkitdirectory>选择文件夹后,只能拿到webkitRelativePath的相对路径,这不是代码问题——浏览器出于安全限制,完全禁止网页获取本地文件/文件夹的绝对路径,目的是防止网页窃取用户本地文件系统的敏感信息。

可行的替代处理方式

1. 提取文件夹名称(从相对路径中)

如果只是需要识别选中的文件夹名称,可以从webkitRelativePath中截取:

public saveFolderLocation(event: Event){
  const element = event.currentTarget as HTMLInputElement;
  const files = element.files;
  if(files?.length){
    const firstPath = Array.from(files)[0]['webkitRelativePath'];
    // 拆分相对路径,取第一个部分作为文件夹名
    const folderName = firstPath.split('/')[0];
    console.log('选中的文件夹:', folderName);
  }
}

2. 直接操作文件内容

如果你的核心需求是处理文件(比如读取、上传),完全不需要依赖路径,直接用选中的File对象即可:

public saveFolderLocation(event: Event){
  const element = event.currentTarget as HTMLInputElement;
  const files = element.files;
  if(files){
    Array.from(files).forEach(file => {
      // 示例:读取文件文本内容
      const reader = new FileReader();
      reader.onload = () => {
        console.log(`处理文件 ${file.name}:`, reader.result);
      };
      reader.readAsText(file);
      // 如果是上传,直接把file对象传给FormData即可
      // const formData = new FormData();
      // formData.append('files', file);
    });
  }
}

重要提醒

任何宣称能绕过浏览器限制获取本地绝对路径的方法,要么是针对旧版浏览器的漏洞(现在已被修复),要么是不可靠的。网页操作本地文件的标准方式就是基于File对象,不要纠结于获取绝对路径——这是浏览器安全机制的强制要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 00:11:02