ASP.NET 웹 API에서 파일을 바이트 배열로 반환
이 문서에서는 ASP.NET 웹 API 내에서 파일을 바이트 배열로 효과적으로 반환하는 방법을 보여줍니다. MVC에서 일반적으로 사용되는 FileContentResult
은 여기에 직접 적용할 수 없습니다.
도전:
MVC용으로 설계된 방법을 사용하여 ApiController
에서 PDF 파일(또는 기타 파일 형식)을 직접 반환하면 예상치 못한 결과가 발생하는 경우가 많습니다.
해결책:
핵심은 파일을 바이트 배열로 처리하는 것입니다. 여기에는 여러 단계가 포함됩니다.
스트림을 바이트 배열로 변환: 파일을 스트림으로 읽은 다음 해당 스트림을 바이트 배열로 변환합니다.
ByteArrayContent 생성: ByteArrayContent
클래스를 활용하여 이전 단계에서 얻은 바이트 배열을 전달합니다.
헤더 관리: 다운로드할 파일 이름을 지정하려면 Content-Disposition
헤더를 올바르게 설정하고, 파일 형식을 올바르게 식별하려면 Content-Type
헤더를 올바르게 설정하세요(예: PDF의 경우 "application/pdf").
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!