2017-12-09 1 views
0

.Net 4.6.1 C#다운로드 대신 새 탭에서 pdf 파일 생성 .Web API

런타임에 pdf 파일을 생성하고 성공적으로 다운로드 할 수 있습니다. 새로 만든 PDF 파일을 다운로드하는 대신 새 탭에서 열려고합니다.

public HttpResponseMessage ToPDF(string cn) 
    { 

     var stream = new MemoryStream(); 
      stream = GeneratePDF(); 


     var result = new HttpResponseMessage(HttpStatusCode.OK) 
     { 
      Content = new ByteArrayContent(stream.ToArray()) 
     }; 
     result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") 
     { 
      FileName = "file.pdf" 
     }; 
     result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); 


     return result; 


    } 

내가이 일 것이라고 생각하지만 그렇지 않습니다 : 여기에 내 코드 (웹 API 2.1 방법)입니다. 내 앵커 태그에도 target = "_ blank"가 있습니다. 새로 생성 된 pdf 파일을 사용자의 하드 드라이브에 다운로드하려는 브라우저 대신 새 탭에서 어떻게 열 수 있습니까? 감사합니다

+1

콘텐츠 처리를 첨부 파일에서 인라인으로 변경해야합니다 (btw에는 'System.Net.Mime.DispositionTypeNames.Inline'에 대한 상수가 있습니다). http://www.iana.org/assignments/cont-disp/cont-disp.xhtml – ckuri

+0

@ckuri를 참조하십시오. 내가 당신에게 적절한 신용을 줄 수 있도록 대답으로 게시하십시오. 감사합니다. – BoundForGlory

+0

제안한대로 답변으로 게시했습니다. – ckuri

답변

1

은 또한 attachment에서 inline에 내용 처리를 변경해야합니다. https://www.iana.org/assignments/cont-disp/cont-disp.xhtmlattachment 따르면

result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue(System.Net.Mime.DispositionTypeNames.Inline) 
    { 
     FileName = "file.pdf" 
    }; 

"은 사용자 제어 표시"를 의미하며, inline "가 자동으로 디스플레이"이다.

+0

멋진 직장 동료입니다! – BoundForGlory

0

그냥 application/octet-stream에서 application/octet-stream으로 미디어 유형을 변경하십시오. 작동해야합니다. HttpResponseMessage 대신 FileResult로 리턴 유형을 변경할 수도 있습니다. 적절한 MIME 타입을 설정 데이비드 Mkheyan의 제안에서 제외 result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");

+1

답장을 보내 주셔서 감사합니다.하지만 여전히 PDF를 다운로드하고 새 탭에서 열지 않으려 고합니다 – BoundForGlory

관련 문제