從Multipart/Form-Data POST 提取檔案位元組
在multipart/form-data POST 中,檔案資料嵌入在請求流。這對在伺服器端提取文件位元組提出了挑戰。一種解決方案涉及利用 Microsoft 的公共 API 來解析多部分內容。
實作
要使用Microsoft 的API 解析多部分數據,您將需要System.Net.Http .dll 和System.Net.Http.Formatting.dll 程式集。對於 .NET 4.5,包含這些組件。對於 .NET 4,透過 NuGet 下載它們。
透過引用的程式集,您可以實作解析邏輯:
public static async Task ParseFiles( Stream data, string contentType, Action<string, Stream> fileProcessor) { var streamContent = new StreamContent(data); streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType); var provider = await streamContent.ReadAsMultipartAsync(); foreach (var httpContent in provider.Contents) { var fileName = httpContent.Headers.ContentDisposition.FileName; if (string.IsNullOrWhiteSpace(fileName)) { continue; } using (Stream fileContents = await httpContent.ReadAsStreamAsync()) { fileProcessor(fileName, fileContents); } } }
要使用此程式碼,您可以實作一個WCF REST 方法,例如如下:
[OperationContract] [WebInvoke(Method = WebRequestMethods.Http.Post, UriTemplate = "/Upload")] void Upload(Stream data) { MultipartParser.ParseFiles( data, WebOperationContext.Current.IncomingRequest.ContentType, MyProcessMethod); }
透過利用微軟的API,您可以有效地從multipart/form-data中提取文件位元組POST 請求,允許您將文件寫入磁碟。
以上是如何從 .NET 中的多部分/表單資料 POST 請求中提取文件位元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!