【发布时间】:2012-12-05 21:26:43
【问题描述】:
我将如何在ApiController 中使用MultipartFormDataStreamProvider 和Request.Content.ReadAsMultipartAsync?
我在谷歌上搜索了一些教程,但我无法让其中任何一个工作,我使用的是 .net 4.5。
这是我目前得到的:
public class TestController : ApiController
{
const string StoragePath = @"T:\WebApiTest";
public async void Post()
{
if (Request.Content.IsMimeMultipartContent())
{
var streamProvider = new MultipartFormDataStreamProvider(Path.Combine(StoragePath, "Upload"));
await Request.Content.ReadAsMultipartAsync(streamProvider);
foreach (MultipartFileData fileData in streamProvider.FileData)
{
if (string.IsNullOrEmpty(fileData.Headers.ContentDisposition.FileName))
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
}
string fileName = fileData.Headers.ContentDisposition.FileName;
if (fileName.StartsWith("\"") && fileName.EndsWith("\""))
{
fileName = fileName.Trim('"');
}
if (fileName.Contains(@"/") || fileName.Contains(@"\"))
{
fileName = Path.GetFileName(fileName);
}
File.Copy(fileData.LocalFileName, Path.Combine(StoragePath, fileName));
}
}
else
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
}
}
}
我得到了异常
MIME 多部分流意外结束。 MIME 多部分消息不是 完成。
当await task; 运行时。
有没有人知道我做错了什么或者在使用 web api 的普通 asp.net 项目中有一个工作示例。
【问题讨论】:
-
如果
t.IsFaulted为真,则表示存在异常,它将填充到Exception属性中。看看异常是什么。或者只是await task;以简化代码,除其他外,它将重新引发任何异常。 -
将 ContinueWith 和 if 语句替换为“await task;”之后我收到“MIME 多部分流意外结束。MIME 多部分消息不完整。”
-
我认为下面的帖子可能会有所帮助stackoverflow.com/questions/17177237/…
标签: c# asp.net asp.net-web-api