我如何获得一个MultipartMemoryStreamProvider的文件内容作为字节数组? [英] How do I get the file contents of a MultipartMemoryStreamProvider as a byte array?
本文介绍了我如何获得一个MultipartMemoryStreamProvider的文件内容作为字节数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经创建了文件上传使用FORMDATA一个Web API控制器的组成部分。
我如何从MultipartMemoryStreamProvider文件内容作为字节数组?
这是Web API方法
公共任务<&IEnumerable的LT; FileModel>>邮政()
{
如果(Request.Content.IsMimeMultipartContent())
{
VAR streamProvider =新MultipartMemoryStreamProvider();
VAR任务= Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileModel>>(t = GT;
{ 如果(t.IsFaulted || t.IsCanceled)
{
抛出新的Htt presponseException(的HTTPStatus code.InternalServerError);
} FileDataBO FILEDATA;
变种的fileInfo = streamProvider.Contents.Select(ⅰ= GT; {
//保存到数据库
FILEDATA =新FileDataBO();
filedata.FileName = i.Headers.ContentDisposition.FileName;
filedata.FileType =JPEG; //如何获得文件内容的位置?它应该的byte []
//filedata.FileContent =? //去做
//_fileDataService.SaveFile(filedata); 返回新FileModel(i.Headers.ContentDisposition.FileName,2048);
});
返回的fileInfo;
}); 返回任务;
}
其他
{
抛出新的Htt presponseException(Request.CreateResponse(的HTTPStatus code.NotAcceptable,这个请求的格式不正确));
}
}
解决方案
您应该能够通过做获取内容 i.ReadAsByteArrayAsync()
I have created a component that uploads files to a Web API controller using FormData.
How do I get the file contents from the MultipartMemoryStreamProvider as a byte array?
Here is the Web Api method
public Task<IEnumerable<FileModel>> Post()
{
if (Request.Content.IsMimeMultipartContent())
{
var streamProvider = new MultipartMemoryStreamProvider();
var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileModel>>(t =>
{
if (t.IsFaulted || t.IsCanceled)
{
throw new HttpResponseException(HttpStatusCode.InternalServerError);
}
FileDataBO filedata;
var fileInfo = streamProvider.Contents.Select(i => {
//save to db
filedata = new FileDataBO ();
filedata.FileName = i.Headers.ContentDisposition.FileName;
filedata.FileType = "jpeg";
// HOW TO GET FILE CONTENT HERE??? IT SHOULD BYTE[]
//filedata.FileContent = ???
//TODO
//_fileDataService.SaveFile(filedata);
return new FileModel(i.Headers.ContentDisposition.FileName, 2048);
});
return fileInfo;
});
return task;
}
else
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
}
}
解决方案
You should be able to get the content by doing i.ReadAsByteArrayAsync()
这篇关于我如何获得一个MultipartMemoryStreamProvider的文件内容作为字节数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文