多部分/表單數據POST 和文件輸入流
問題:
發帖時使用multipart/form-data 將檔案傳輸到REST服務,如何從請求流中有效地提取文件位元組用於處理?
答案:
要從多部分/表單資料 POST 請求流中提取文件字節,使用 Microsoft 公共 API 的綜合方法是可用。
先決條件:
代碼實現:
public static async Task ParseFiles( Stream data, string contentType, Action<string, Stream> fileProcessor) { // Parse multipart request content var streamContent = new StreamContent(data); streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType); var provider = await streamContent.ReadAsMultipartAsync(); // Iterate through file parts foreach (var httpContent in provider.Contents) { var fileName = httpContent.Headers.ContentDisposition.FileName; if (string.IsNullOrWhiteSpace(fileName)) continue; using (Stream fileContents = await httpContent.ReadAsStreamAsync()) { // Process file bytes fileProcessor(fileName, fileContents); } } }
示例用法:
對於WCF REST 方法 " OperationContract”,即可執行該文件處理:
public void Upload(Stream data) { MultipartParser.ParseFiles( data, WebOperationContext.Current.IncomingRequest.ContentType, MyProcessMethod); }
透過利用此方法,開發人員可以輕鬆地從多部分/表單資料 POST 請求中擷取檔案位元組以進行後續處理和儲存。
以上是如何從多部分/表單資料 POST 請求流中高效率地提取文件位元組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!