ASP.NET Web API でファイル コンテンツ結果を返す
FileContentResult
は MVC コントローラーで PDF などのファイルを提供するためにうまく機能しますが、これを ApiController
に直接移植すると課題が生じます。 StreamContent
を使用しようとする単純な試みは多くの場合失敗し、ファイル自体ではなく JSON メタデータが生成されます。 解決策は ByteArrayContent
を活用することにあります。
この改訂されたコード スニペットは、Web API からのファイル コンテンツの結果として PDF ファイルを効果的に返します。
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { using (var stream = new MemoryStream()) { // Process the stream to generate PDF content here... var 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
を使用してファイルのバイトをカプセル化し、ContentDisposition
ヘッダーを「attachment」に設定してダウンロードを促すことです。 ContentType
ヘッダーにより、クライアントによる適切な処理が保証されます。 using
が適切に破棄されるようにするために、MemoryStream
を使用することに注意してください。 このアプローチにより、Web API を介した PDF やその他のファイル タイプのシームレスな配信が可能になります。
以上がASP.NET Web APIからファイルコンテンツの結果を返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。