从 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);
}
我有一个 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);
}