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

ASP.NET Web APIでファイルを適切に返すにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-18 17:41:09245ブラウズ

How to Properly Return Files in ASP.NET Web API?

ASP.NET Web API でファイルを正しく返します

ASP.NET MVC では、FileContentResult クラスを使用するとファイルを返すのが非常に簡単です。ただし、WebAPI を使用する場合はアプローチが異なります。

WebAPI への適応

WebAPI は異なる規則を使用し、異なる戻り値の型を必要とします。通常の MVC コントローラーの Test メソッドを API コントローラーに適合させるには、IHttpActionResult の代わりに FileContentResult を返す必要があります。

最初の試みと問題

最初の試行では、StreamContent クラスを使用してファイル ストリームを返しました。コンテンツのタイプと長さは設定されていますが、ブラウザーにはヘッダーのみが表示されます。

解決策: ByteArrayContent

問題は、StreamContent がストリームから既に読み取られたコンテンツでは機能しないことです。代わりに、ストリームのバイト配列を入力として受け取る ByteArrayContent を使用する必要があります。

変更されたコード:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    var stream = new MemoryStream();
    // 处理流。

    var result = new HttpResponseMessage(HttpStatusCode.OK)
    {
        Content = new ByteArrayContent(stream.ToArray())
    };
    result.Content.Headers.ContentDisposition =
        new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
    {
        FileName = "CertificationCard.pdf"
    };
    result.Content.Headers.ContentType =
        new MediaTypeHeaderValue("application/octet-stream");

    return result;
}</code>

この変更されたコードは、ファイルの内容を応答として正しく返し、ダウンロードまたはブラウザーでの表示を可能にします。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。