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

ASP.NET Web APIでファイルをByteContentとして返すにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-18 17:36:11
オリジナル
210 人が閲覧しました

How to Return Files as ByteContent in ASP.NET Web API?

ASP.NET Web API でファイルをバイト配列として返す

この記事では、ASP.NET Web API 内でファイルをバイト配列として効果的に返す方法を説明します。 MVC で一般的に使用される FileContentResult は、ここでは直接適用できません。

チャレンジ:

MVC 用に設計されたメソッドを使用して ApiController から PDF ファイル (または他のファイル タイプ) を直接返すと、予期しない結果が生じることがよくあります。

解決策:

重要なのは、ファイルをバイト配列として扱うことです。 これにはいくつかの手順が必要です:

  1. ストリームからバイト配列への変換: ファイルをストリームに読み取り、そのストリームをバイト配列に変換します。

  2. ByteArrayContent 作成: ByteArrayContent クラスを利用し、前の手順で取得したバイト配列を渡します。

  3. ヘッダー管理: ダウンロードするファイル名を指定するために Content-Disposition ヘッダーを適切に設定し、ファイル タイプ (PDF の場合は「application/pdf」など) を正しく識別するために Content-Type ヘッダーを適切に設定します。

  4. HttpResponseMessage 構築: 適切な HTTP ステータス コード (例: ByteArrayContent) を設定して、HttpResponseMessage オブジェクト内に HttpStatusCode.OK をパッケージ化します。

コード例:

<code class="language-csharp">[HttpGet]
public HttpResponseMessage Generate()
{
    using (var stream = new MemoryStream())
    {
        // ... Your file stream processing here ...  Populate the 'stream'

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

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

この改訂された例では、必要なヘッダーを備えたバイト配列として PDF ファイル (または任意のファイル タイプ) を返す方法を示します。 これで、クライアント (ブラウザ) はファイルのダウンロードを正しく処理できるようになります。 プレースホルダー コメント // ... Your file stream processing here ... を実際のファイル読み取りロジックに置き換えることを忘れないでください。 ブラウザーの互換性を高めるために、より具体的な Content-Type ヘッダーの使用を検討してください。

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

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