[英]WebAPI File Uploading - Without writing files to disk
關於處理使用 FormData 上傳到 ASP.NET WebAPI 處理程序的文件的所有文檔/教程/問題都使用MultipartFormDataStreamProvider
來處理多部分流以將其拆分為相關的表單字段和文件。
var root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);
await Request.Content.ReadAsMultipartAsync(provider);
foreach (MultipartFileData file in provider.FileData)
{
// File
}
但是,文件在處理過程中會自動寫入目錄。
當我可以使用HttpContext.Current.Request.Files[0].InputStream
直接訪問內存中的給定文件流時,這似乎很麻煩。
WebAPI 如何在沒有使用MultipartFormDataStreamProvider
的 IO 開銷的情況下直接訪問文件流?
官方教程: http : //www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2
解決了:
使用現有的簡單MultipartMemoryStreamProvider
。 不需要自定義類或提供程序。 這與通過編寫自定義提供程序解決解決方案的重復問題不同。
然后在 WebAPI 處理程序中使用它,如下所示:
public async Task<IHttpActionResult> UploadFile()
{
if (!Request.Content.IsMimeMultipartContent())
{
return StatusCode(HttpStatusCode.UnsupportedMediaType);
}
var filesReadToProvider = await Request.Content.ReadAsMultipartAsync();
foreach (var stream in filesReadToProvider.Contents)
{
var fileBytes = await stream.ReadAsByteArrayAsync();
}
return StatusCode(HttpStatusCode.OK);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.