ASP.Net Core Web API でファイルを返す
問題:
Web API コントローラー多くの場合、ファイルを返す機能が必要です。ただし、ContentType を application/octet-stream として設定する手順を実行した場合でも、返された HttpResponseMessage が JSON としてフォーマットされる場合に問題が発生する可能性があります。
解決策:
ASP.Net Core では、アクションに IActionResult インターフェイスを利用することで、この問題が解決されます。フレームワークは、このアプローチを使用して HttpResponseMessage をモデルとして解釈します。
実装方法は次のとおりです:
<code class="csharp">[Route("api/[controller]")] public class DownloadController : Controller { [HttpGet("{id}")] public async Task<IActionResult> Download(string id) { Stream stream = await GetStreamByIdAsync(id); if (stream == null) return NotFound(); // Returns a NotFoundResult with Status404NotFound response. return File(stream, "application/octet-stream", $"{filename.ext}"); // Returns a FileStreamResult } }</code>
注:
フレームワークは自動的に応答が完了したらストリームを破棄します。 using ステートメントを時期尚早に使用すると、例外または破損した応答が発生します。
以上がJSON 形式を使用せずに ASP.Net Core Web API からファイルを返す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。