首頁 >後端開發 >C++ >如何從多部分/表單資料 POST 請求流中高效率地提取文件位元組?

如何從多部分/表單資料 POST 請求流中高效率地提取文件位元組?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-01 01:23:08182瀏覽

How to Efficiently Extract File Bytes from a Multipart/Form-Data POST Request Stream?

多部分/表單數據POST 和文件輸入流

問題:

發帖時使用multipart/form-data 將檔案傳輸到REST服務,如何從請求流中有效地提取文件位元組用於處理?

答案:

要從多部分/表單資料 POST 請求流中提取文件字節,使用 Microsoft 公共 API 的綜合方法是可用。

先決條件:

  • System.Net.Http.dll(包含在.NET 4.5 或透過NuGet for .NET 4)
  • System.Net.Http.Formatting.dll(透過NuGet for .NET 4.5 或.NET 4)

代碼實現:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn