2009-10-05 10 views
1

웹 기반의 오디오 파일 저장소 (강의 녹음)에 대한 액세스를 제어하는 ​​빠른 웹 페이지를 작성하고 있습니다. 오디오 파일은 SAN에 보관되고 UNC 공유를 사용하여 웹 서버에서 액세스됩니다.IIS를 통해 네트워크 공유에있는 파일을 강제로 다운로드하십시오.

테스트 도중 일부 웹 브라우저에서 mp3 파일을 저장하기가 매우 어려워서 "저장"대화 상자가 나타나게하고 싶습니다. 학생들이 듣기 만하는 것이 아니라 파일을 저장할 수 있어야합니다.

다른 요구 사항은 학생이 파일의 저작권을 존중하기로 동의하는 체크 박스를 클릭 한 후에 만 ​​사용할 수 있어야한다는 것입니다.

먼저 도메인 사용자로 인증 된 웹 사이트의 가상 디렉터리를 사용하려고했습니다. 그러나 오디오 파일의 URL을 명령 단추로 열면 웹 브라우저가 즉시 재생하려고 할 수 있습니다.

대신에 ADODB.stream을 사용하고 stream.LoadFromFile을 사용하여 적절한 콘텐츠 처리를 통해 파일을 다운로드하여 다운로드하도록했습니다. LoadFromFile은 파일 경로를 사용하기 때문에 IIS 가상 디렉터리를 사용할 수 없으므로 네트워크 공유에 웹 사이트의 익명 로그인 액세스 권한을 부여해야합니다. 나는 이것을 도메인 계정으로 실행함으로써이 일을했지만, 덜 안전하다고 생각할 때 이것은 다소 긴장하게 만든다.

그럼에도 불구하고 stream.LoadFromFile 명령이 네트워크 공유에서 파일을 읽는 것을 거부하기 때문에 원하는 목표를 달성 할 수 없습니다. 사이트를 실행하기 위해 사용하는 도메인 로그인이 해당 네트워크 공유에 대한 전체 액세스 권한을 가지고 있더라도 인증 오류가 발생합니다.

내 목표를 달성하기위한 대체 수단에 대한 권장 사항은 무엇입니까?

답변

2

브라우저로 파일을 반환 할 때 mime-type을 "application/x-unknown"으로 설정하십시오. 브라우저에서 파일을 처리하는 방법을 모르기 때문에 다운로드하라는 메시지가 표시됩니다.

브라우저에서 파일 확장명을 읽고 영리하게 시도 할 가능성이 있지만이를 수행 할 수있는 방법은 없습니다.

+0

덕분에,이 트릭을했다.내 가상 디렉터리에 IIS에서 MIME 형식을 설정하여 application/x-unkown 유형의 mp3 파일 확장명을 설정하고 이것이 내가 찾고있는 결과를 얻었습니다. 신속한 답변을 보내 주신 브렌트의 솔루션은 앞으로도 매우 유용 할 수 있습니다. –

+1

IE와 함께 가장 일반적인 파일 형식에서는이 작업이 실패합니다. –

+0

감사합니다 ... 도움이 ... –

0

저는 마임 유형을 변경하는 ck의 대답을 좋아합니다 (내가 랭킹 되었다면 투표하십시오). 이것은 문제를 저장하지 arround 얻을 것이다.

당신은

  Response.Clear() 
     Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name) 
     Response.AddHeader("Content-Length", file.Length.ToString()) 
     Response.ContentType = "application/octet-stream" 
     Response.WriteFile(file.FullName) 
     Response.End 'if file does not exist 

당신은 또한 ZIP 확장으로 오디오 파일의 압축을 시도 할 수 있습니다 .. 응답 헤더의 대신 ADODB 다음 코드를 시도해보십시오의 MIME 형식을 변경 수정할 수 있습니다. 이것은 동일한 효과를 가지며 다운로드에 필요한 대역폭을 줄입니다. zip 파일을 동적으로 캐시하는 경우이를 고려할 수 있습니다.

은 여기에 전체 코드를 살펴 가진 시도 - http://www.xefteri.com/articles/show.cfm?id=8

당신은 너무 predownload 검사에 저작권 Vertification를 추가 할 수 있습니다.

+0

MP3 파일을 압축하는 것은 옳지 않습니다. MP3는 이미 압축 형식이므로 클라이언트가이를 허용하는 대부분의 IIS 설치가 HTTP 압축으로 구성되어 있다면이 작업을 거의 또는 전혀받지 못할 수 있습니다. mime-type을 변경하는 것이 가장 좋은 방법 일 것입니다. – Raoul

2

가장 좋은 방법은 응답 헤더를 다음과 같이 추가하는 것입니다.

내용 - 처리 : 첨부 파일; 파일 이름 = fname.ext

참조 : http://support.microsoft.com/kb/260519 대한 추가 정보를 원하시면

+1

웹상의 모든 솔루션에서 모든 브라우저에서 아무 것도 시도하지 않았습니다. 그러나이 솔루션 (IIS의 HTTP 응답 헤더 변경)은 모든 브라우저와 모든 파일 형식, 오디오, 이미지 및 비디오에서 작동하는 것으로 밝혀졌습니다. –

관련 문제