2012-01-16 3 views
13

나는 내 사이트의 MP3 파일을 마우스 오른쪽 버튼으로 클릭하고 저장하는 대신 다운로드하여 다운로드하려고하므로 Content-Disposition : attachment를 설정해야합니다. 이것은 처음 웹 사이트이므로 실제로 이것을하는 방법에 익숙하지 않지만 HTML 마크 업에서이 작업을 수행합니까, 아니면 어떻게해서든지 내 호스팅 사이트에서이 작업을 수행합니까?콘텐츠 처리를 구현하는 방법 : 첨부 파일?

내 마크 업이 어떻게 생겼는지 보여주는 예입니다. MP3 목록의

<div class="download"> 
<a href="MP3/Morgan Page, Sultan & Ned Shepard, and BT feat. Angela McCluskey.mp3" 
<img src="img/dlicon.png"/></a> 
</div> 
+3

고객. 서버에 다운로드 서버 역할을 할 수있는 스크립트가 필요하며 Content-Disposition 헤더를 발행하는 스크립트입니다. –

+0

좀 더 자세한 정보를 제공해 주시겠습니까? 어떤 웹 서버를 사용하고 있습니까? –

+0

HostGator.com을 사용하고 있습니다. –

답변

17

예 :

<a href="download.php?file=testing.mp3">Download MP3</a> 
<a href="download.php?file=testing2.mp3">Download MP3</a> 

download.php :

<?php 

$file = $_GET['file']; 

header('Content-type: audio/mpeg'); 

header('Content-Disposition: attachment; filename="'.$file.'"'); 

?> 
+4

위의 코드는 파일 이름에 큰 따옴표와 비 ASCII 문자가있는 경우 실패합니다 (RFC 6266 참조). –

+0

@JulianReschke 예, OP는 파일 이름을 대체해야합니다 (질문 참조, 파일 이름 : Morgan Page, Sultan & Ned Shepard 및 BT feat. Angela McCluskey.mp3). 내 대답을 업데이트 할게. –

+6

참고 : 실제로 mp3에 대한 액세스 제어가 필요하지 않으면 콘텐츠 처리 헤더 세트가있는 mp3를 제공하도록 서버를 구성하는 것이 좋습니다. PHP를 파일 서버로 사용하면 대용량 파일의 경우 속도가 느려집니다. –

3

다른 사람이 말했듯이, 동적 솔루션을 HTML에서이 작업을 수행하지 않습니다 (예를 들어, , PHP를 사용하여) 과잉이다. 귀하의 경우에는

, 나는 웹 서버 설정의 내용 - 처리 헤더를 구성 할 것입니다. Apache의 경우 헤더 based on location을 설정하거나 .htaccess 파일을 특정 파일 이름과 일치시킬 수 있습니다.

+2

이 동적 솔루션은 앱 개발에서 항상 발생합니다. 예를 들어 특권 콘텐츠를 허용하기 전에 인증을해야한다고 가정 해보십시오. 인증 확인 및 파일 스트림은 종종 동일한 요청에서 가져와야합니다. – JoshuaDavid

1

도, PHP에서 해당위한 특별한 기능이있다 :

bool http_send_content_disposition (string $filename [, bool $inline = false ])

여기 PHP 매뉴얼를 참조하십시오 : 서버 측 작업의과에 HTML 코드를 통해 수행 할 수 없습니다 http://de2.php.net/manual/en/function.http-send-content-disposition.php

+4

Note :'http_send_content_disposition'은 기본적으로 사용 가능하지 않지만 PECL 확장자를 통해 가능합니다 :'PECL pecl_http> = 0.10.0' – zamnuts

관련 문제