jur*_*_be 10 c# file-upload asp.net-web-api
我正在尝试将(一个)上传的文件保存到数据库/内存流中,但我无法弄明白.
我现在所拥有的只是:
public Task<HttpResponseMessage> AnswerQuestion()
{
if (!Request.Content.IsMimeMultipartContent())
{
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
}
var root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
var task = Request.Content.ReadAsMultipartAsync(provider).
ContinueWith<HttpResponseMessage>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
Request.CreateErrorResponse(HttpStatusCode.InternalServerError, t.Exception);
}
foreach (var file in provider.FileData)
{
Trace.WriteLine(file.Headers.ContentDisposition.FileName);
Trace.WriteLine("Server file path: " + file.LocalFileName);
}
return Request.CreateResponse(HttpStatusCode.OK);
});
return task;
}
Run Code Online (Sandbox Code Playgroud)
但当然这只会将文件保存到特定位置.我想我必须使用从MediaTypeFormatter派生的自定义类来将其保存到MemoryStream,但我不知道如何做到这一点.
请帮忙.提前致谢!
Fil*_*p W 27
可以将多部分内容读入抽象MultipartStreamProvider类的任何具体实现中- 请参阅http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/8fda60945d49#src%2fSystem.Net.Http.Formatting%2fMultipartStreamProvider.cs.
这些是:
- MultipartMemoryStreamProvider
- MultipartFileStreamProvider
- MultipartFormDataStreamProvider
- MultipartRelatedStreamProvider
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
if (Request.Content.IsMimeMultipartContent())
{
var streamProvider = new MultipartMemoryStreamProvider();
var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith(t =>
{
foreach (var item in streamProvider.Contents)
{
//do something
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14335 次 |
| 最近记录: |