ホームページ > バックエンド開発 > C++ > ASP.NET MVC Web APIでファイルPOSTを受け入れるにはどうすればよいですか?

ASP.NET MVC Web APIでファイルPOSTを受け入れるにはどうすればよいですか?

DDD
リリース: 2025-01-24 01:26:09
オリジナル
431 人が閲覧しました

How to Accept File POSTs in ASP.NET MVC Web API?

ASP.NET Web API でのファイル アップロードの処理

ASP.NET Web API では、従来の ASP.NET MVC メソッドとは異なり、ファイルのアップロードを処理するための特定のアプローチが必要です。 HttpPostedFile パラメータには直接互換性がありません。 この解決策には、マルチパート コンテンツを活用することが含まれます。

マルチパート コンテンツ: ファイル アップロードの鍵

Web API ファイルのアップロードにはマルチパート コンテンツが不可欠です。 単一の HTTP リクエスト内でテキスト データとファイル データを効率的に結合します。

ファイルアップロード用のコントローラーアクションの構築

Task<IHttpActionResult> を使用したコントローラー アクションは、非同期ファイル処理に最適です。 以下に例を示します:

<code class="language-csharp">[HttpPost("api/upload")]
public async Task<IHttpActionResult> Upload()
{
    if (!Request.Content.IsMimeMultipartContent())
        throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);

    var provider = new MultipartMemoryStreamProvider();
    await Request.Content.ReadAsMultipartAsync(provider);

    foreach (var file in provider.Contents)
    {
        var filename = file.Headers.ContentDisposition.FileName.Trim('\"');
        var buffer = await file.ReadAsByteArrayAsync();

        // File processing logic here (e.g., save to disk, database, etc.)
    }

    return Ok();
}</code>
ログイン後にコピー

コードの説明:

  1. IsMimeMultipartContent(): リクエストのマルチパート コンテンツ タイプを検証します。
  2. MultipartMemoryStreamProvider: メモリ内のマルチパート データを管理します。
  3. ReadAsMultipartAsync(): マルチパート データを個々のコンポーネントに解析します。
  4. ファイルの反復: コードはファイルの各部分を反復して、ファイル名を抽出し、データをバイト配列に読み取ります。
  5. ファイル処理: ここに、ファイル処理ロジック (保存、処理など) を実装します。
  6. Ok(): 成功した HTTP 応答を返します。

結論:

このアプローチは、ASP.NET Web API でファイルのアップロードを処理するための信頼できる方法を提供します。 マルチパート コンテンツと MultipartMemoryStreamProvider を使用すると、Web API サービス内で効率的かつ堅牢なファイル アップロード処理が保証されます。

以上がASP.NET MVC Web APIでファイルPOSTを受け入れるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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