ホームページ > バックエンド開発 > C++ > マルチパート/フォームデータ POST リクエスト ストリームからファイル バイトを効率的に抽出する方法

マルチパート/フォームデータ POST リクエスト ストリームからファイル バイトを効率的に抽出する方法

Mary-Kate Olsen
リリース: 2025-01-01 01:23:08
オリジナル
163 人が閲覧しました

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 に含まれるか、.NET 4 用の NuGet 経由)
  • 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート