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

Angular实现文件夹选择并保存绝对路径功能求助

Angular 文件夹选择对话框获取路径解决方案

你当前用webkitdirectory属性的问题在于,浏览器会返回选中文件夹下的所有文件,而非文件夹本身;同时出于安全限制,浏览器不会直接提供本地文件夹的绝对路径。不过可以通过webkitRelativePath属性提取出选中文件夹的路径信息。

修正后的代码实现

HTML 部分

保留原有input标签即可:

<input type="file" id="filepicker" name="fileList" (change)="saveFolderLocation($event)" webkitdirectory/>

TypeScript 部分

在组件的saveFolderLocation方法中,通过文件的webkitRelativePath提取文件夹路径:

saveFolderLocation(event: Event): void {
  const inputElement = event.target as HTMLInputElement;
  if (!inputElement.files || inputElement.files.length === 0) return;

  // 取第一个文件的相对路径,拆分后得到选中的文件夹路径
  const firstFile = inputElement.files[0];
  const folderPathSegments = firstFile.webkitRelativePath.split('/');
  // 移除最后一段(文件名),剩下的就是文件夹的相对路径
  folderPathSegments.pop();
  const selectedFolderPath = folderPathSegments.join('/');

  // 这里的selectedFolderPath就是选中的文件夹路径(浏览器允许的范围内)
  console.log('选中的文件夹路径:', selectedFolderPath);
  // 可将该路径保存到组件变量中供后续使用
}

关键说明

  • 浏览器无法获取本地文件系统的绝对路径,这是浏览器的安全策略,防止网页获取用户本地文件系统的敏感信息。
  • webkitRelativePath返回文件相对于选中文件夹的路径,比如选中/User/Documents/Project文件夹,其中的readme.txt的webkitRelativePath为Project/readme.txt,拆分后即可得到文件夹的路径部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:05:50