2012-01-16 9 views
13

Sitemdeki mp3'lerin sağ tıklama ve kaydetme yerine sol tıklama ile indirilebilmesi için yapmaya çalışıyorum. Bunu yapmak için İçerik-Yerleşim: ekini ayarlamam gerekiyor. Bu benim ilk web sitemdir, bu yüzden bunu gerçekten nasıl yapacağım konusunda yeniyim, ama bunu html işaretlememde mi yaparım yoksa bunu bir şekilde hosting sitemle mi yapıyorum?Content-Disposition nasıl uygulanır: ek?

İşte biçimlendirmemizin neye benzediğine dair bir örnek. MP3 Listelerinin

<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

istemcisi. Sunucuda indirme sunucusu olarak hareket edebilecek bir komut dosyasına ihtiyacınız olacak ve İçerik-Yerleşim başlıklarını verecek olan bu komut dosyası. –

+0

Daha fazla bilgi verebilir misiniz? Hangi web sunucusunu kullanıyorsunuz? –

+0

HostGator.com kullanıyorum –

cevap

17

Örnek:

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

indir.php:

<?php 

$file = $_GET['file']; 

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

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

?> 
+4

Yukarıdaki kod, çift tırnaklı ve dosya adlarında ASCII olmayan karakterler ile başarısız olur (bkz. RFC 6266). –

+0

@JulianReschke evet, OP dosya adını değiştirmelidir (bkz. Soru, dosya adı: Morgan Page, Sultan ve Ned Shepard ve BT feat. Angela McCluskey.mp3). Cevabımı güncelleyeceğim. –

+6

Not: Gerçekten mp3'lerde erişim denetimlerine ihtiyacınız olmadıkça, sunucuyu içerik-düzenleyici üstbilgisi seti ile bu mp3'lere hizmet verecek şekilde yapılandırmak daha iyidir. PHP'yi bir dosya sunucusu olarak kullanmak, özellikle büyük dosyalarla birlikte işleri yavaşlatır. –

3

Diğerleri söylediler, dinamik bir çözüm HTML bunu yap, yok (örn PHP kullanarak) overkill.

Sizin durumunuzda, Content-Disposition üstbilgisini web sunucusu yapılandırmasında yapılandıracağım. Apache için, based on location başlığını ayarlayabilir veya belirli dosya adlarına uyan bir .htaccess dosyasına sahip olabilirsiniz.

+2

Bunun için dinamik bir çözüm, uygulama geliştirmede her zaman olur. Örneğin, ayrıcalıklı içeriğe izin vermeden önce kimlik doğrulaması yapmak zorunda olduğunuzu düşünün. Kimlik doğrulama kontrolü ve dosya akışı genellikle aynı talepte bulunmalıdır. – JoshuaDavid

1

de PHP'de Bunun için özel bir işlevi yoktur:

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

burada PHP Manual bakınız: bir sunucu tarafı işlemdir ve HTML kodu aracılığıyla yapılamaz http://de2.php.net/manual/en/function.http-send-content-disposition.php

+4

Not: 'http_send_content_disposition' * doğal olarak değil, PECL uzantısı yoluyla kullanılabilir:' PECL pecl_http> = 0.10.0' – zamnuts