我使用multipart / form-data使用http post请求将文件上传到我的类,该类从ApiController扩展。
在虚拟项目中,我可以使用:
HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase
在我的控制器方法中获取文件,其中我的请求类型为System.Web.HttpRequestWrapper
。
但是在另一个我没有添加任何库/ dll限制的生产应用程序中,我在System.Web.HttpRequestWrapper
内看不到任何内容。
我的简单要求是获取发布的文件并将其转换为字节数组,以便能够将其存储到数据库中。
有什么想法?
答案 0 :(得分:0)
此代码示例来自我之前做过的ASP.NET Web API项目。它允许上传图像文件。我删除了与您的问题无关的部分。
public async Task<HttpResponseMessage> Post()
{
if (!Request.Content.IsMimeMultipartContent())
throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
try
{
var provider = await Request.Content.ReadAsMultipartAsync(new MultipartMemoryStreamProvider());
var firstImage = provider.Contents.FirstOrDefault();
if (firstImage == null || firstImage.Headers.ContentDisposition.FileName == null)
return Request.CreateResponse(HttpStatusCode.BadRequest);
using (var ms = new MemoryStream())
{
await firstImage.CopyToAsync(ms);
var byteArray = ms.ToArray();
}
return Request.CreateResponse(HttpStatusCode.Created);
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex);
}
}