ASP.NET 웹 API에서 PDF 파일 반환
표준 MVC 컨트롤러에서는 FileContentResult
을 사용하여 PDF를 반환하는 것이 간단합니다. 하지만 ApiController
에는 다른 접근 방식이 필요합니다.
문제
IHttpActionResult
에서 일반적인 ApiController
반환 유형을 사용하면 PDF를 반환할 때 문제가 발생합니다. 일부 예에서 알 수 있듯이 단순히 StreamContent
을 반환하면 브라우저에 PDF 파일 자체 대신 헤더가 표시되는 경우가 많습니다.
올바른 방법
ByteArrayContent
대신 StreamContent
을 사용하는 것이 핵심입니다. 이는 적절한 전송을 위해 스트림 데이터를 바이트 배열로 변환합니다. 개선된 예는 다음과 같습니다.
<code class="language-csharp">[HttpGet] public HttpResponseMessage Generate() { MemoryStream stream = new MemoryStream(); // ... PDF generation code to populate the stream ... HttpResponseMessage 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
을 사용하여 PDF를 바이트 배열로 보냅니다. 결정적으로 ContentDisposition
헤더를 attachment
(브라우저에게 파일을 다운로드하라고 지시)로 설정하고 ContentType
를 application/octet-stream
(바이너리 파일을 나타냄)으로 설정합니다. 이렇게 하면 PDF가 브라우저에서 렌더링되지 않고 올바르게 다운로드됩니다.
위 내용은 ASP.NET 웹 API에서 FileContentResult(PDF)를 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!