ホームページ > バックエンド開発 > C++ > ASP.NET Web API から FileContentResult (PDF) を返す方法

ASP.NET Web API から FileContentResult (PDF) を返す方法

Patricia Arquette
リリース: 2025-01-18 17:31:09
オリジナル
886 人が閲覧しました

How to Return a FileContentResult (PDF) from an ASP.NET Web API?

ASP.NET Web API から PDF ファイルを返す

標準の MVC コントローラーでは、FileContentResult を使用して PDF を返すのは簡単です。 ただし、ApiController には別のアプローチが必要です。

問題

IHttpActionResult で一般的な ApiController 戻り値の型を使用すると、PDF を返すときに問題が発生します。 いくつかの例が示すように、単純に StreamContent を返すと、多くの場合、ブラウザーは PDF ファイル自体ではなくヘッダーを表示します。

正しい方法

重要なのは、ByteArrayContent の代わりに StreamContent を使用することです。これにより、ストリーム データが適切に送信できるようにバイト配列に変換されます。 改良された例を次に示します:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    MemoryStream stream = new MemoryStream();
    // ... PDF generation code to populate the stream ...

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

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

このコードは ByteArrayContent を使用して PDF をバイト配列として送信します。 重要なのは、ContentDisposition ヘッダーを attachment に設定し (ファイルをダウンロードするようにブラウザーに指示します)、ContentTypeapplication/octet-stream に設定します (バイナリ ファイルを示します)。 これにより、PDF がブラウザでレンダリングされるのではなく、正しくダウンロードされるようになります。

以上がASP.NET Web API から FileContentResult (PDF) を返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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