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

C#中从Headers提取文件名异常:取值为34而非目标文件名的解决方法

问题解决:从ContentDisposition中正确提取文件名

你得到整数34的原因是FileName属性的值是带双引号的字符串(比如"Test.txt"),而你调用的FirstOrDefault()方法会返回字符串的第一个字符——双引号的ASCII编码正好是34,所以最终得到的是这个字符的整数形式,而非完整文件名。

修复方案很简单,直接使用FileName属性并去除两端的双引号即可,同时增加空值判断避免异常:

var fileContent = provider.Contents.FirstOrDefault(c => c.Headers.ContentDisposition.Name.Replace("\"", "") == "file");

if (fileContent != null && fileContent.Headers.ContentDisposition != null)
{
    // 移除文件名首尾的双引号,同时处理可能的空值
    var fileName = fileContent.Headers.ContentDisposition.FileName?.Trim('"');
}

补充说明

  • Trim('"')会安全移除字符串首尾的双引号,无论原字符串是否包含引号都能正常处理
  • 加上?.空传播运算符,避免FileName为null时触发空引用异常
  • 原代码中的FirstOrDefault()完全多余,因为FileName本身就是字符串类型,不是集合/枚举,调用它只会取第一个字符的ASCII值,这就是问题的核心

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 20:15:34