2010-02-01 8 views
4

CDN (Rackspace의 클라우드 파일)과 해당 파일에 대한 링크가 포함 된 고정 html 페이지에 파일이 있다고 가정합니다. 이 파일을 강제로 다운로드 할 수있는 방법이 있습니까 (브라우저에서 열지 못하게하려면 mp3 용)?마크 업 또는 JS를 통해 강제 다운로드

우리는 우리의 서버가 파일을 읽고에 해당 헤더를 설정 할 수 있습니다 :

header("Content-Type: application/force-download") 

하지만 우리는 오히려 CDN가 알아서 할 것이다, 그래서 우리는 한 달에 약 500 만 다운로드합니다.

아이디어가 있으십니까?

+2

'응용 프로그램/강제 다운로드'가 없습니다. 대신'application/octet-stream'을 사용하십시오. – Gumbo

+1

감사합니다. 이제는 그것에 대해 생각하는 것이 이치에 맞지 않습니다. 브라우저에서 저장할 파일을 정의 할 수있는 방법이 없습니다. 헤더에 액세스 할 수있는 경우가 아니면 저장되지 않습니다. –

+1

콘텐츠 유형을 사용하여 다운로드를 강제하는 것은 해킹입니다. Content-Disposition을 대신 사용하십시오. – Quentin

답변

5

HTML 또는 JavaScript에서이를 수행 할 방법이 없습니다.There is now! (Ish. See @BruceAldrige’s answer below.)

HTTP Content-Disposition 헤더는 브라우저가 파일을 다운로드하도록 지시하는 것으로, 서버에서 전송 한 것입니다. 디스플레이 대신 브라우저에서 다운로드 할 파일을 헤더에 보내도록 CDN을 구성해야합니다.

저는 Rackspace의 Cloud Files 서비스에 익숙하지 않으므로 허용 여부와 방법에 대해 잘 모릅니다.

클라우드 파일이있는 파일을 섬길 수 없다 '내용 - 처리 : 첨부 파일'HTTP 헤더를 그냥 슬프게 생각하지 제안 년 12 월 2009 페이지를 발견했다. 따라서 다른 서비스에서 완벽하게 작동하는 다운로드 링크는 브라우저에서 파일을 직접 렌더링 할 수 있습니다. 이것은 Rackspace 엔지니어들에 의해 확인되었습니다. XMLHttpRequest를 통해 다운로드 및이 data: URL을 제공 : :-(

http://drupal.org/node/656714

나는 (예 : http://blog.cloudberrylab.com/2009/06/how-to-set-custom-http-headers-for.html 참조)

+0

네, 이제 S3로 이동하기에는 너무 늦었습니다. 어쨌든 답변 주셔서 감사합니다. –

0

이 미친 아이디어 S3에 의해 뒷받침대로, 아마존의 CloudFront를 서비스를 할 수있는 것을 알고있다 원하는 콘텐츠 형식을 사용 하시겠습니까? : P

1

네, 클라우드 파일 API를 통해이 작업을 수행 할 수 있습니다. 메서드 스트림을 사용하면 헤더 내용을 설정하여 파일 내용을 스트리밍 할 수 있습니다.

,