2009-10-02 15 views
6

जब कोई उपयोगकर्ता "पीडीएफ डाउनलोड करें" लिंक पर क्लिक करता है, तो मैं डाउनलोड प्रॉम्प्ट को दिखाना चाहता हूं और उपयोगकर्ता को फ़ाइल डाउनलोड करने में सक्षम होना चाहिए।फ़ाइल डाउनलोड को ट्रिगर करने वाला लिंक कैसे बनाएं?

वर्तमान में, उपयोगकर्ता को केवल पीडीएफ फाइल के पते पर स्थानांतरित कर दिया गया है।

उदाहरण के लिए:

<a..[what goes here??]..>Download PDF</a> 

ऐसा लगता है वहाँ जावास्क्रिप्ट & पीएचपी यह करने के लिए की जरूरत का एक संयोजन है कि।

क्या कोई कोई उदाहरण दे सकता है?

उत्तर

6

आप अपाचे पर हैं, तो आप अपनी .htaccess में इस ड्रॉप कर सकते हैं:

<Files *.pdf> 
    Header set Content-Disposition attachment 
</Files> 

इस डाउनलोड के रूप में सभी पीडीएफ दस्तावेजों भेज देंगे।mod_headers हालांकि सक्षम होना चाहिए।

+0

यही वही है जो मैं ढूंढ रहा था, धन्यवाद! – edt

+0

आपका स्वागत है। :) – middus

+0

एक 'डाउनलोड' विशेषता भी है। (सुनिश्चित नहीं है कि कौन से ब्राउज़र इसका समर्थन करते हैं, लेकिन आप इसे वैसे भी जोड़ सकते हैं।) – Darkwater

0

यह स्पष्ट नहीं है तुम क्या मतलब द्वारा

वर्तमान में, उपयोगकर्ता केवल पीडीएफ फाइल का पता करने के लिए स्थानांतरित कर रहा है।

<a href='http://example.com/download.pdf'>Download PDF</a> 

के चुनाव को डाउनलोड करने या उद्घाटन एक फ़ाइल अधिक ब्राउज़र की सेटिंग है:

लेकिन मैं एक साधारण दृष्टिकोण सुझाव देते हैं।

1

आप वेब सर्वर प्रतिक्रिया के लिए एक HTTP शीर्ष लेख जोड़कर लिंक की गई सामग्री को बचाने के लिए ब्राउज़र के लिए मजबूर कर सकते हैं:

Content-Disposition: attachment; filename=<default filename to save as> 

दूसरी ओर, मैं वास्तव में बिंदु उपयोगकर्ता के ब्राउज़र अधिभावी में नहीं दिख रहा है कॉन्फ़िगरेशन, जो आम तौर पर बताता है कि पीडीएफ दस्तावेजों को डिफ़ॉल्ट रूप से ब्राउज़र में खोला जाना चाहिए, एक अलग पीडीएफ व्यूअर में खोला गया है या डिस्क में सहेजा गया है।

+0

हालांकि, मैं आम तौर पर सहमत हूं कि उपयोगकर्ता की प्राथमिकता को सम्मानित किया जाना चाहिए, मैं कम से कम एक मामले के बारे में सोच सकता हूं जहां उन्हें ब्राउज़र में देखने के बजाय फ़ाइल डाउनलोड करने के लिए प्रोत्साहित किया जाना चाहिए: ऐसी स्थितियां जहां उन्हें शायद एक प्रतिलिपि सहेजें, जैसे ऑनलाइन बीमा पॉलिसी, या इसी तरह की। –

0

मैं नहीं मानता कि आपकी समस्या, वेनिला HTML के लिए एक जादुई जावास्क्रिप्ट/पीएचपी समाधान है:

<a href="docco.pdf" title="this is a link to a pdf">download the PDF</a> 

क्या करेंगे की आवश्यकता है, यह ब्राउज़र प्रत्यक्ष संसाधन अनुरोध करने के लिए होगा "docco। पीडीएफ ", यह ब्राउज़र (और कोई प्लगइन्स) पर कुछ करने के लिए है।

उदाहरण के लिए, एक फ़ायरफ़ॉक्स एडन "PDF download" है जो उपयोगकर्ता को पॉपअप के साथ क्या करना है, इसकी पसंद प्रदान करता है।

<?php 
header('Content-disposition: attachment; filename=movie.mpg'); 
header('Content-type: video/mpeg'); 
readfile('movie.mpg'); 
?> 

अपने <a href कोड एक विशेष पृष्ठ को इंगित करने की आवश्यकता होगी, और readfile अपने संसाधन

Further reading

बस कॉल करेगा:

7

पुनर्निर्देशन उस पर इस कोड के साथ एक PHP पृष्ठ पर एक साइड नोट के रूप में, मैं सहमत हूं कि आपको ब्राउज़र सेटिंग्स को ओवरराइड नहीं करना चाहिए, लेकिन कभी-कभी जब बॉस पूछता है, तो आपको बस करना होगा।

1

आप अपने टैग पर HTML5 download विशेषता का उपयोग कर सकते हैं।

<a href="http://love4cats.com/kitten-catalogue.pdf" download>Download the CATalogue</a> 

आपको अपने विश्लेषण की जांच करनी चाहिए और यह सुनिश्चित करना चाहिए कि आपका लक्षित ब्राउज़र विशेषता का समर्थन करता है। ब्राउज़र समर्थन के लिए caniuse.com entry पृष्ठ देखें।

2
You can also use the following code: 

<?php 
$file = filter_input(INPUT_GET, 'file'); 
$filename = basename($file); 
header("Content-Type: application/force-download"); 
header("Content-Disposition: attachment; filename=\"{$filename}\";"); 
readfile("your file path {$file}"); 
?> 

इस तरह के रूप में किसी भी फाइल एक्सटेंशन का संकेत देगा (.pdf, .docx, .zip, .csv, .txt, .html, .php और इतने पर ...) सीधे नई ब्राउज़र में खोले बिना ।

संबंधित मुद्दे