2012-01-16 11 views
13

मैं इसे बनाने की कोशिश कर रहा हूं ताकि मेरी साइट पर एमपी 3 को राइट क्लिक करने और सहेजने के बजाए बाएं क्लिक करके डाउनलोड किया जा सके, इसलिए ऐसा करने के लिए, मुझे सामग्री-डिस्पोजिशन: अटैचमेंट सेट करना होगा। यह मेरी पहली वेबसाइट है इसलिए मैं वास्तव में ऐसा करने के लिए नया हूं, लेकिन क्या मैं इसे अपने एचटीएमएल मार्कअप में करता हूं या क्या मैं इसे किसी भी तरह से अपनी होस्टिंग साइट के साथ सेट करता हूं?सामग्री-विस्थापन को कैसे कार्यान्वित करें: अनुलग्नक?

मेरा मार्कअप कैसा दिखता है इसका एक उदाहरण यहां दिया गया है।

<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

सर्वर की ओर से आपरेशन है कि और एचटीएमएल कोड के माध्यम से नहीं किया जा सकता पर ग्राहक। आपको सर्वर पर एक स्क्रिप्ट की आवश्यकता होगी जो डाउनलोड सर्वर के रूप में कार्य कर सकता है, और यह वह स्क्रिप्ट है जो सामग्री-विस्थापन शीर्षलेख जारी करेगी। –

+0

क्या आप कुछ और जानकारी प्रदान कर सकते हैं? आप किस वेब सर्वर का उपयोग कर रहे हैं? –

+0

मैं HostGator.com –

उत्तर

17

एमपी 3 सूचियाँ का उदाहरण:

<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 वर्णों के साथ विफल हो जाएगा (आरएफसी 6266 देखें)। –

+0

@ जुलिआन रेस्के हां, ओपी को फाइलनाम को प्रतिस्थापित करना चाहिए (प्रश्न देखें, फ़ाइल का नाम है: मॉर्गन पेज, सुल्तान और नेड शेपर्ड, और बीटी फीट। एंजेला मैकक्लूसकी. एमपी 3)। मैं अपना जवाब अपडेट करूंगा। –

+6

नोट: जब तक आपको वास्तव में एमपी 3 पर एक्सेस कंट्रोल की आवश्यकता नहीं होती है, तो सामग्री-स्वभाव हेडर सेट के साथ उन एमपी 3 को सेवा देने के लिए सर्वर को कॉन्फ़िगर करना बेहतर होता है। फ़ाइल सर्वर के रूप में PHP का उपयोग करना चीजों को धीमा कर देता है, खासकर बड़ी फ़ाइलों के साथ। –

3

के रूप में अन्य लोगों ने कहा है, तो आप क्या करते हो न कि HTML में, और एक गतिशील समाधान (जैसे , PHP का उपयोग कर) overkill है।

आपके मामले में, मैं वेब सर्वर कॉन्फ़िगरेशन में सामग्री-वितरण शीर्षलेख को कॉन्फ़िगर करता हूं। अपाचे के लिए, आप हेडर based on location सेट कर सकते हैं, या .htaccess फ़ाइल है जो कुछ फ़ाइल नामों से मेल खाती है।

+2

इसके लिए एक गतिशील समाधान ऐप विकास में हर समय होता है। उदाहरण के लिए कल्पना करें कि विशेषाधिकार प्राप्त सामग्री को अनुमति देने से पहले प्रमाणीकरण करना है। प्रमाणीकरण जांच और फ़ाइल स्ट्रीम को अक्सर एक ही अनुरोध से आने की आवश्यकता होती है। – JoshuaDavid

1

है कि PHP में के लिए एक विशेष समारोह भी है:

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

देखें पीएचपी मैनुअल यहाँ: http://de2.php.net/manual/en/function.http-send-content-disposition.php

+4

नोट: 'http_send_content_disposition' * n * उपलब्ध नहीं है, लेकिन एक पीईसीएल एक्सटेंशन के माध्यम से: 'PECL pecl_http> = 0.10.0' – zamnuts