簡體   English   中英

WebAPI 文件上傳 - 無需將文件寫入磁盤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM