我有一个上传文件的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
关于如何获得它的任何想法?谢谢。
答案 0 :(得分:1)
file.LocalFileName
采用在保存POST请求中的数据时生成的本地文件。要提取通过POST发送的文件的实际文件名,您必须使用:file.Headers.ContentDisposition.FileName
foreach (MultipartFileData file in provider.FileData)
{
fi.name = Path.GetFileName(file.Headers.ContentDisposition.FileName);
}
答案 1 :(得分:0)
您可以尝试以下方法代替file.LocalFileName
file.Headers.ContentDisposition.FileName