ASP.NET Web API でファイルをバイト配列として返す
この記事では、ASP.NET Web API 内でファイルをバイト配列として効果的に返す方法を説明します。 MVC で一般的に使用される FileContentResult
は、ここでは直接適用できません。
チャレンジ:
MVC 用に設計されたメソッドを使用して ApiController
から PDF ファイル (または他のファイル タイプ) を直接返すと、予期しない結果が生じることがよくあります。
解決策:
重要なのは、ファイルをバイト配列として扱うことです。 これにはいくつかの手順が必要です:
ストリームからバイト配列への変換: ファイルをストリームに読み取り、そのストリームをバイト配列に変換します。
ByteArrayContent 作成: ByteArrayContent
クラスを利用し、前の手順で取得したバイト配列を渡します。
ヘッダー管理: ダウンロードするファイル名を指定するために Content-Disposition
ヘッダーを適切に設定し、ファイル タイプ (PDF の場合は「application/pdf」など) を正しく識別するために Content-Type
ヘッダーを適切に設定します。
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 サイトの他の関連記事を参照してください。