c# - 从 C# 中的 MultipartFileData 获取原始文件名
问题描述
我有一个文件上传的 POST 请求,其正文类似于此:
-----------------------------88481896131794
Content-Disposition: form-data; name="file"; filename="test.txt"
Content-Type: text/plain
Content
-----------------------------88481896131794
Content-Disposition: form-data; name="text"
asdf
-----------------------------88481896131794
Content-Disposition: form-data; name="email"
asdf@gmail.com
在 Visual Studio 2015 上,我处理这样的请求:
string root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
await Request.Content.ReadAsMultipartAsync(provider);
我使用以下代码获取文件名:
foreach (MultipartFileData file in provider.FileData)
{
fi.name = Path.GetFileName(file.LocalFileName);
}
使用这种方法,我得到了一个完全不同BodyPart_408513e3-60d8-42f5-bdf3-8df9742f833f
的名字,我需要的是原来的名字test.txt
关于如何获得它的任何想法?谢谢。
解决方案
获取file.LocalFileName
保存 POST 请求中的数据时生成的本地文件。要提取通过 POST 发送的文件的实际文件名,您必须使用:file.Headers.ContentDisposition.FileName
foreach (MultipartFileData file in provider.FileData)
{
fi.name = Path.GetFileName(file.Headers.ContentDisposition.FileName);
}
推荐阅读
- multithreading - C# - WebDriver - MSTest 框架并行执行
- r - 在 R Shiny 中为进度条使用并行 foreach
- java - PDFBox:PDDocument 和 PDPage 是否相互引用?
- powershell - 为什么 PowerShell 在“Get-Credentials”上意外退出?
- node.js - Mongoose find() 回调实际上没有被调用
- c# - 在同一个“使用”中连接到不同的连接字符串
- json - Android Kotlin 解析嵌套 JSON
- asp.net - 无法加载文件或程序集 'msshrtmi, Version=2.7.0.0 - 什么 SDK 安装它?
- python - 没有使用 Flask (Python) 将 HTML 表单中的数据传递给 MySQL
- mysql - 如何修复慢更新查询