从 C# 中的 MultipartFileData 获取原始文件名

Get original filename from MultipartFileData in c#

我有一个 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

2015年Visual Studio,我这样处理请求:

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

file.Headers.ContentDisposition.FileName

file.LocalFileName 获取保存来自 POST 请求的数据时生成的本地文件。要提取通过 POST 发送的文件的实际文件名,您必须使用:file.Headers.ContentDisposition.FileName

foreach (MultipartFileData file in provider.FileData)
{
   fi.name = Path.GetFileName(file.Headers.ContentDisposition.FileName);
}