2011-09-23 4 views
0

확인 MP3 형식의 podcast를 제공하는 웹 사이트가 있습니다. 이 라우트 다운로드 스크립트 MP3 파일에 대한 요청 htaccess로이며, 그 다음과 같다 :Quicktime으로 브라우저에서 열지 않고 강제로 MP3 파일 다운로드

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteRule (.*.mp3)$ download.php?file=$1 
</IfModule> 

PHP의 다운로드 스크립트는 다음과 같다 :

$filename = (isset($_REQUEST['file']) ? $_REQUEST['file'] : ''); 
$filesize = @filesize($filename); 
if ($filename == '' || $filesize == 0) exit(0); 
header("Content-Type: audio/mpeg"); 
header("Content-Description: {$filename}"); 
header("Content-length: {$filesize}"); 
header("Content-Disposition: attatchment; filename={$filename}"); 
readfile($filename); 

모든 것이 아름답게 PC에서 작동, 그리고 대부분의 Mac 브라우저에서. 그러나 Safari에서는 Quicktime이 다운로드를 가로 채고 있습니다. iPhone 및 iPad에서도 동일한 문제가 발생합니다. 대상 사용자는 주로 Apple 사용자 일 가능성이 높으므로 "다운로드"버튼을 사용하여 다운로드를 수행하고 장치에 관계없이 Quicktime 플러그인이 포함 된 브라우저에서는 재생되지 않도록하십시오. "스트림"버튼은 브라우저에서 파일을 재생할 수 있지만 "다운로드"버튼에서는 재생할 수 없습니다.

마우스 오른쪽 버튼을 클릭 (또는 Cmd + 클릭)하고 다른 이름으로 파일 저장 ...을 수행하는 것은 허용되지 않습니다.

PHP, HTTP, HTML 등 모든 플랫폼에서 다운로드 버튼을 클릭하는 것 외에는 아무 것도 할 필요가없는 강제로 다운로드 할 수있는 방법이 있습니까?

답변

0

파일을 처리 할 때 content-disposition HTTP 헤더를 설정해야합니다. 이 HTTP 헤더를 설정하면 브라우저가 파일을 저장하거나 열 수있는 프롬프트를 제공하도록 지시합니다. 여기에서 더 많은 정보를 얻을 수 있습니다 :

http://support.microsoft.com/kb/260519

관련 문제