>백엔드 개발 >C++ >ASP.NET Web API에서 파일을 ByteContent로 반환하는 방법은 무엇입니까?

ASP.NET Web API에서 파일을 ByteContent로 반환하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-18 17:36:11258검색

How to Return Files as ByteContent in ASP.NET Web API?

ASP.NET 웹 API에서 파일을 바이트 배열로 반환

이 문서에서는 ASP.NET 웹 API 내에서 파일을 바이트 배열로 효과적으로 반환하는 방법을 보여줍니다. MVC에서 일반적으로 사용되는 FileContentResult은 여기에 직접 적용할 수 없습니다.

도전:

MVC용으로 설계된 방법을 사용하여 ApiController에서 PDF 파일(또는 기타 파일 형식)을 직접 반환하면 예상치 못한 결과가 발생하는 경우가 많습니다.

해결책:

핵심은 파일을 바이트 배열로 처리하는 것입니다. 여기에는 여러 단계가 포함됩니다.

  1. 스트림을 바이트 배열로 변환: 파일을 스트림으로 읽은 다음 해당 스트림을 바이트 배열로 변환합니다.

  2. ByteArrayContent 생성: ByteArrayContent 클래스를 활용하여 이전 단계에서 얻은 바이트 배열을 전달합니다.

  3. 헤더 관리: 다운로드할 파일 이름을 지정하려면 Content-Disposition 헤더를 올바르게 설정하고, 파일 형식을 올바르게 식별하려면 Content-Type 헤더를 올바르게 설정하세요(예: PDF의 경우 "application/pdf").

  4. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.