如何從WCF REST 中的多部分/表單資料POST 流中提取檔案位元組
將檔案發佈到WCF REST 時透過multipart/form-data 請求提供服務,結果流包含一系列邊界、標頭和檔案位元組。從此流中提取文件位元組可能具有挑戰性。
解決方案:利用Microsoft 公用API
Microsoft 提供了一組公用API 簡化此流程:
實現:
此程式碼片段示範如何使用這些來擷取檔案位元組API:
using System.Net.Http; using System.Net.Http.Formatting; using System.Threading.Tasks; 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); }
檔案處理:
在 MyProcessMethod 中,您可以指定擷取的檔案位元組執行的操作,例如將它們寫入磁碟。
以上是如何從 WCF REST 中的多部分/表單資料 POST 流中提取文件位元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!