2009-07-09 3 views
3

제 양해 해 주시기 바랍니다. 나는 올바른 방향으로 한 지점을 찾고있다.링크 URL 숨김

나는 (pdf) 다운로드 링크가있는 페이지가 있습니다. 링크를 클릭하면 pdf가 새 페이지에서 열립니다. pdf가 서버에있는 폴더를 볼 수 있습니다. 같은 폴더에있는 다른 파일 이름을 추측하면 운이 좋을 수도 있습니다. 일부 파일은 비공개이므로 사용자가 URL에서 힌트를 얻지 못하게해야합니다. 이 정보를 어떻게 알아볼 수 있습니까? 우리는 .net 2를 백엔드에서 실행 중입니다. 메소드를 호출하고 파일을 열 수 있습니까?

도움을 주시면 감사하겠습니다. 나는 나를 시작하기 위해 무엇을 검색해야할지 확신하지 못한다.

감사합니다.

우리는 .Net 2 백엔드를 보유하고 있습니다.

답변

12

당신은 당신의 데이터베이스에 GUID를, 당신은 한 페이지, DownloadPdf.aspx를 만들 수있는 각각의 PDF 파일을 연결하고, 귀하의 파일 시스템에 올바른 파일을 찾을 수 GUID를 통과하고, 렌더링 수 :

Response.Clear(); 
Response.ContentType = "application/pdf"; 
Response.WriteFile(physicalPathToFile); 
Response.End(); 

편집

당신이 사용자에게 PDF 파일을 다운로드 할 수있는 기능을 제공하려는 경우, 당신은으로 Response.End하기 전에, 다음 줄을 추가 할 수 있습니다

Response.AddHeader("content-disposition", "attachment; filename=" + filename); 

여기서 filename은 실제 파일 (또는 원하는 모든 이름)의 모호하지 않은 이름이 될 수 있습니다.

+2

파일의 이름을 guid로 바꾸고 원본 파일 이름을 데이터베이스에 보관하십시오. 이렇게하면 고유 한 파일 이름이 보장되며 기본 파일 버전을 사용할 수도 있습니다. –

1

D.의 게시물은 100 % 정확합니다. 한 단계 더 나아가 .resources 확장명으로 파일을 저장할 수 있으므로 IIS는 결코 filE를 직접 제공하지 않습니다.

+1

+1. 그것은 좋은 지적입니다. 비록 app_data에 파일을 저장함으로써 동일하게 달성 될 수 있습니다. 그렇게하면 파일 형식을 왜곡하지 않아도됩니다 (예 : 관리자로 원격으로 서버를 탐색 할 때, 또는 처리중인 콘텐츠의 유형을 알고 싶을 때 편리) –

+0

예, 나는 그것이 사실 일 것이라고 믿는다. –