2010-02-20 10 views
2

나는 pdfs가있는 폴더가 있지만, 공개하지 않기를 바란다. (단지 www.domain.com/pdfs/doc.pdf를 입력하는 것과 같다).aspx 페이지로 서버에서 pdf를로드하는 방법 (또는 pdf 파일을 안전하게로드하는 방법)?

내가 어떻게 내가이? 필자을 어떻게

이 발견 (www.domain.com/loadpdf.asmx?key=23452ADFASD12345 또는 사용하여 POST 같은) 어떤 종류의 보안 조치를하도록해야합니다 pdf를 만들지 만 서버에서로드하는 방법은 아닙니다.

감사합니다.

+0

파일 이름을 알고 싶지 않습니까? – awright18

+0

사용자가 PDF를 저장하는 방법을 너무 많이 알 필요가 없습니다! –

+0

어쩌면 PDF 파일을 저장하도록 선택하면 파일 이름을 표시하는 것이 좋을 것입니다 ... 나는 그것에 대해 thougth하지 않았습니다. – sergiogx

답변

2

PDF를 바이트 배열로 읽고이를 사용하십시오. awright18이 말했듯이, 핸들러 (.ashx)에서 이것을하십시오. 이런 식으로 뭔가 :

[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class MapHandler : IHttpHandler, IReadOnlySessionState 
{ 

    public void ProcessRequest(HttpContext context) { 
     CreateImage(context); 
    } 

    private void CreateImage(HttpContext context) { 

     string documentFullname = // Get full name of the PDF you want to display... 

     if (File.Exists(documentFullname)) { 

      byte[] buffer; 

      using (FileStream fileStream = new FileStream(documentFullname, FileMode.Open, FileAccess.Read, FileShare.Read)) 
      using (BinaryReader reader = new BinaryReader(fileStream)) { 
       buffer = reader.ReadBytes((int)reader.BaseStream.Length); 
      } 

      context.Response.ContentType = "application/pdf"; 
      context.Response.AddHeader("Content-Length", buffer.Length.ToString()); 
      context.Response.BinaryWrite(buffer); 
      context.Response.End(); 

     } else { 
      context.Response.Write("Unable to find the document you requested."); 
     } 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 

나는 SO 유용 여기 this thread을 발견하지만, 위의 당신을 위해 작동합니다.

+0

고맙습니다. 단 하나의 질문입니다. 사용자가 파일을 저장하도록 선택하면 파일 이름이 보존됩니다. ? – sergiogx

+0

도와 줘서 기쁩니다. 아니요, 파일 이름이 보존되지 않습니다. 핸들러의 클래스 이름이 기본 파일 이름 인 것처럼 보입니다. 좀 더 의미있는 기본 파일 이름을 변경할 수 있는지 확인하려고합니다. 이 작업을 수행하는 방법을 찾으면 (또는 누군가가 알고있는 경우) 게시하십시오! –

1

이러한 요청을 처리하려면 사용자 정의 http 처리기를 사용해야합니다. Here은 정확한 질문을 다루는 기사입니다.

관련 문제