2009-06-18 6 views
2

내 웹 사이트 (보통 <a href="file.mp3"> 태그)에 mp3 파일에 대한 링크가 있습니다.다운로드/저장하기 위해 mp3 파일에 대한 강제 연결

Apple Quicktime을 설치 한 많은 사용자는 링크를 클릭 할 때 "저장"하지 않고 mp3 파일을 열 것입니다.

브라우저 환경 설정을 사용하지 않고 브라우저가 링크를 강제로 저장할 수 있습니까?

JavaScript 또는 C# .NET을 사용할 수 있으며 가능한 경우 간단한 해결책을 찾고 있습니다.

답변

6

"Content-Disposition"이 "attachment"로 설정된 http 헤더를 설정해야합니다. 이렇게하면 브라우저가 저장 대화 상자를 강제로 표시합니다. 873207에는 C#에서이 작업을 수행하는 깔끔한 방법이 있습니다.

과 마찬가지로 Pax에는 기본적으로이 작업을해서는 안됩니다.이를 수행하는 좋은 방법은 파일에 대한 일반 링크 (사용자가 수행하는 방식)를 제공하고 저장 대화 상자를 강제 실행하는 보조 링크를 제공하는 것입니다. 그렇게하면 "덜 재능있는"사용자가 간단한 클릭 저장 작업을 수행 할 수있을뿐 아니라 모든 다른 사용자가 mp3로 원하는 모든 작업을 수행 할 수 있습니다.

+0

1을 다운로드 속성을 사용하여. 나는 다운로드를 강제하는 것이 적절한 경우 (예 : 보고서 내보내기) 특정 시나리오가 있다고 덧붙이고 싶지만 여기에서는 적용하지 않는 것으로 인정합니다. – Basic

0

나는 이것을 쉽게 할 수 있다고 생각하지 않습니다. 또한 이 아니어야합니다. 이 기계는 사용자의 것이며 MP3를 다운로드하는 대신 스트리밍하려는 경우 결정하는 것입니다.

내 솔루션은 사람들이 다운로드하기보다는 스트리밍되었다고 불평 할 수있는 링크를 제공하는 것입니다. (글쎄, 무엇이든에 진정으로 불평하고) 커뮤니티가 자신을 포함하여 솔루션을 제공하게하십시오.

누군가가 다운로드보다는 항상 게임하는 것처럼 보이면 Firefox와 QuickTime을 사용하고 있는지 확인하고 Firefox를 마우스 오른쪽 버튼으로 클릭하여 저장 또는 다시 구성 할 수 있다고 알릴 수 있습니다 .

은 MIME 형식이나 파일 이름을 변경하는 등 사용자가이를 수행 할 수있는 방법이 될 것이라고 말하지만 사용자가 제어해야하는 내 의견은 의미합니다. 어쨌든, 결정된 사용자는 사용하기로 결정한 MIME 형식을 스트리밍하도록 브라우저를 쉽게 구성 할 수 있으므로 여전히 보장 할 수 없습니다.

0

그것은 절대적으로 강제하는 것은 불가능하지만, 당신이 당신의 아파치 설정에 줄을 추가 시도 할 수 있습니다 : 그것은 나의 이해는 IE는 요청에 보이는 위 있도록 MIME 형식을 추측을 시도하는

AddType application/random-fake-type .mp3 

입니다 해결 방법은 실제로 작동하지 않습니다.

3

페이지에 Content-Disposition 헤더를 추가하기 만하면됩니다.

<FilesMatch "\.mp3$"> 
Header set Content-Disposition attachment; filename=downloaded.mp3 
</FilesMatch> 

이 있지만 단점이 다운로드 한 파일은 "저장-으로"대화 상자에서 같은 이름을 가질 것입니다 :

다음은이 작업을 수행 할 수있는 간단한 htaccess로 규칙입니다. 이것은 파일 이름 부분 없이도 작동하지만 테스트하지는 않았습니다. (비록 나머지 부분도 테스트하지는 않았지만 ...;)

편집 : 또한 서버 측 스크립팅을 사용할 수있는 경우 파일 이름을 얻기 위해 Content-Disposition 헤더를 설정하십시오.

4

이것은 오랜 구식 질문이며 이런 식으로 일하는 데 문제가 있는지 확실하지 않지만 최근에 문제가 발생하여 해결책으로 사용하는 것으로 끝났습니다.

저장이 음악과 같은 폴더에 PHP 파일 (예 : downloadmusicfile.php)과 같이

<?php 
$filename = $_GET['file']; 
if (isset($filename)) 
{ 
// Prevents access to something that is not in the same directory as this script 
if(substr_count($filename,"/") > 0) 
{ 
die('This should not happen.'); 
}; 
$len = filesize($filename); 
header('Pragma: public'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Cache-Control: public'); 
header('Content-Description: File Transfer'); 
header('Content-Type: application/force-download'); 
header('Content-Disposition: attachment; filename='.$filename); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: '.$len); 
readfile($filename); 
} 
else 
{ 
die('No file specified.'); 
}; 
?> 

는 다음과 같이 파일을 사용하고 있습니다 :

<a href="downloadmusicfile.php?file=song.mp3">Link Name</a> 

이이 강제 사용자가 한 번/왼쪽으로 다운로드 링크를 클릭하면 "다른 이름으로 저장"상자가 나타납니다.

1

그것은 많은 브라우저에서 작동,하지만 Safari 또는 IE : 2 링크 솔루션의 HTML5

에서

<a href="/audio/myfile.mp3" download>

관련 문제