2013-04-02 3 views
0

링크 버튼을 클릭하면 링크 버튼이있는 gridview가 있습니다. pdf, jpeg, doc처럼 파일을 다운로드 할 수 있지만 링크 버튼을 클릭하면 브라우저 자체가 표시됩니다.브라우저에서 pdf 열기

string pdfPath = Server.MapPath("~/SomePDFFile.pdf"); 
WebClient client = new WebClient(); 
Byte[] buffer = client.DownloadData(pdfPath); 
Response.ContentType = "application/pdf"; 
Response.AddHeader("content-length", buffer.Length.ToString()); 
Response.BinaryWrite(buffer); 

는하지만 난 브라우저

+0

이 파일들이 웹 사이트 폴더에 있습니까? 그렇다면 왜 그들과 연결되어 있지 않습니까? – Paddy

+0

http://stackoverflow.com/questions/12974115/to-open-pdf-file-in-iframe – adt

답변

0

같은 페이지 또는 다른 페이지의 iframe에 pdf, jpg 등을 표시 할 수 있습니다. 예를 들어 :

<iframe id="iframe" runat="server" src="NameOfYourFolder/pdf.pdf"></iframe> 

여기에 내가 iframe을에 표시 할 PDF 파일의 경로를 하드 코딩했다. GridView에서 해당 링크 버튼과 관련된 파일의 경로를 가져오고 해당 경로를 포함 된 코드 블록을 통해 iframe의 src로 전달하는 메커니즘을 만들어야합니다.

+0

지원에 감사드립니다. –

1

이 파일 형식에 따라 현재 시스템 유형을 처리하도록 구성하는 방법에있는 링크 버튼 내부 JPEG, PDF, 문서의 gridview에 같은 오픈 파일을합니다.

예를 들어, 대부분의 이미지 이 기본적으로 브라우저에서 열립니다. 그러나 나를 위해, 나는 크롬을 PDF 파일을위한 기본 등록 된 응용 프로그램으로 설정했다. 그러나 지금은 표준적인 일이 아니다. 많은 일반 사용자들은 Foxit과 같은 무언가를 설치할 때 다운로드하라는 내용을 그대로 가지고있을 것이다. 브라우저가 파일 형식을 처리하도록 등록되지 않은 경우에는 발생하지 않습니다.

0

Content-Disposition: inline 헤더를 지정해야합니다. 브라우저가 Content-Type 헤더에 지정한 유형의 디스플레이를 지원하면 브라우저에 표시됩니다.

반대쪽은 Content-Disposition: attachment입니다. 브라우저가 HTML 인 경우에도 콘텐츠에 다른 이름으로 저장 버튼을 제공해야합니다.

1

첫 번째 방법은 브라우저에 응답 객체의 내용 유형을 설정하여 브라우저에서 PDF보기 헤더에서 PDF의 바이너리 형식을 추가 할

protected void btnOpen_Click(object sender, EventArgs e) 
{ 
Response.Redirect("SiteAnalytics.pdf"); 
} 

두 번째 방법은 PDF를 표시합니다

protected void btnpdf_Click(object sender, EventArgs e) 
{ 
string path = Server.MapPath("SiteAnalytics.pdf"); 
WebClient client = new WebClient(); 
Byte[] buffer = client.DownloadData(path); 

if (buffer != null) 
{ 
Response.ContentType = "application/pdf"; 
Response.AddHeader("content-length", buffer.Length.ToString()); 
Response.BinaryWrite(buffer); 
} 
관련 문제