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

ASP.NET Core 6 Web API中如何获取上传文件的原始路径

无法从IFormFile获取客户端原始文件路径的原因及解决方案

核心问题说明

浏览器基于安全限制,在文件上传过程中不会将客户端的真实本地文件路径(如C:\Users\Valk\OneDrive\Desktop\Test.xlsx)发送到服务器。所有现代浏览器都会剥离本地路径信息,仅传递文件名部分;部分浏览器可能会返回类似C:\fakepath\Test.xlsx的伪路径,但这并非真实的客户端文件系统路径。

你的代码分析

在你的代码中:

[HttpPost]
public IActionResult Post(IFormFile file)
{
    var filesPath = Directory.GetCurrentDirectory();
    var fileName = Path.GetFileName(file.FileName);
    var filePath = Path.Combine(filesPath, fileName);

    return Ok();
}

file.FileName获取到的是浏览器处理后的结果——要么是纯文件名,要么是带fakepath的伪路径,无法从中解析出客户端的真实本地路径。

替代方案

如果你的需求是区分不同上传文件(而非获取本地路径),可以采用以下方式:

  • 生成唯一文件名:结合GUID与原文件名,避免同名文件覆盖
    var uniqueFileName = $"{Guid.NewGuid()}_{Path.GetFileName(file.FileName)}";
    var filePath = Path.Combine(filesPath, uniqueFileName);
    
  • 要求客户端额外提交文件元数据:比如文件描述、上传者标识等,通过请求参数或请求体传递
  • 记录上传上下文信息:如上传时间、用户ID等,用于文件的区分和追溯

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 19:01:20