通常のMVCコントローラーでは、pdfをで出力できますFileContentResult
。
public FileContentResult Test(TestViewModel vm)
{
var stream = new MemoryStream();
//... add content to the stream.
return File(stream.GetBuffer(), "application/pdf", "test.pdf");
}
しかし、どうすればそれをに変更できApiController
ますか?
[HttpPost]
public IHttpActionResult Test(TestViewModel vm)
{
//...
return Ok(pdfOutput);
}
これが私が試したものですが、うまくいかないようです。
[HttpGet]
public IHttpActionResult Test()
{
var stream = new MemoryStream();
//...
var content = new StreamContent(stream);
content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
content.Headers.ContentLength = stream.GetBuffer().Length;
return Ok(content);
}
ブラウザに表示される返される結果は次のとおりです。
{"Headers":[{"Key":"Content-Type","Value":["application/pdf"]},{"Key":"Content-Length","Value":["152844"]}]}
また、SO:ASP.NET Web APIのコントローラーからバイナリファイルを返すという同様の投稿があります 。既存のファイルの出力について話します。しかし、ストリームで動作させることはできませんでした。
助言がありますか?