दिलचस्प पोस्ट
याद रखें और फ़ाइल इनपुट को फिर से बदलना MySQL: सेकंड में दो टाइमस्टैंप के बीच अंतर कैसे प्राप्त करें बाइट सरणी पैटर्न खोज Master..spt_values ​​का उपयोग करके कॉलम को विभाजित करने के लिए क्यों (और कैसे)? Div आईडी और div वर्ग के बीच अंतर एंड्रॉइड: एक ListView से बच्चे के दृश्यों तक पहुंचें पीडीएफ को HTML में कनवर्ट करें इंटरैक्टिव मैप्लोटलिब आंकड़े सहेज रहे हैं मुझे अपने यूआरएल में पिछली स्लैश का उपयोग कब करना चाहिए? INSTALL_FAILED_DUPLICATE_PERMISSION … C2D_MESSAGE एसक्यूएल DATE से केवल महीना और वर्ष प्राप्त करना एक सूची में पायथन 3 मोड़ रेंज फ़ंक्शन पैरामीटर मूल्यांकन क्रम जावा में डीकोड बेस64 डेटा वर्तमान लोकेल समय में यूटीसी कन्वर्ट करें

एचटीएमएल में पीडीएफ के लिए क्लिक करें "पाठ के रूप में सहेजें …" पॉपअप खोलने के लिए बल

मेरी वेबसाइट पर मेरे पास कुछ बड़े आकार के पीडीएफ कैटलॉग हैं, और मुझे इन्हें डाउनलोड के रूप में लिंक करना होगा। जब मैंने गॉगल किया, तो मुझे नीचे नोट किया गया इसे लिंक क्लिक पर " इस रूप में सहेजें … " पॉपअप को खोलना चाहिए ..

<head> <meta name="content-disposition" content="inline; filename=filename.pdf"> ... 

लेकिन यह काम नहीं करता है: / जब मैं नीचे फ़ाइल करने के लिए लिंक करता हूं, यह सिर्फ फाइल करने के लिए और फाइल को खोलने का प्रयास करता है

  <a href="filename.pdf" title="Filie Name">File name</a> 

अद्यतन (नीचे दिए गए उत्तर के अनुसार):

जैसा कि मैंने देखा है कि इसके लिए कोई 100% विश्वसनीय क्रॉस-ब्राउज़र समाधान नहीं है। शायद सबसे अच्छा तरीका नीचे सूचीबद्ध वेब सेवाओं में से एक का उपयोग कर रहा है, और डाउनलोड लिंक दे रहा है …

  • http://box.net/
  • http://droplr.com/
  • http://getcloudapp.com/

वेब के समाधान से एकत्रित समाधान "एचटीएमएल में पीडीएफ के लिए क्लिक करें "पाठ के रूप में सहेजें …" पॉपअप खोलने के लिए बल"

उत्तर से एक क्लिक करने के बाद फ़ाइल को सहेजने के लिए बल दें :

 <a href="path/to/file" download>Click here to download</a> 
 <a href="file link" download target="_blank">Click here to download</a> 

यह फ़ायरफ़ॉक्स और क्रोम में मेरे लिए काम करता है

मेटा टैग इस परिणाम को प्राप्त करने का एक विश्वसनीय तरीका नहीं है आम तौर पर आपको यह भी नहीं करना चाहिए – यह आपके द्वारा प्रदान की जाने वाली सामग्री के साथ क्या करना है यह तय करने के लिए उपयोगकर्ता / उपयोगकर्ता एजेंट को छोड़ा जाना चाहिए। प्रयोक्ता अपने ब्राउजर को फाइल डाउनलोड करने के लिए मजबूर कर सकते हैं यदि वे चाहें।

यदि आप अब भी ब्राउज़र को फ़ाइल डाउनलोड करने के लिए मजबूर करना चाहते हैं, तो HTTP शीर्षलेख सीधे संशोधित करें यहां एक PHP कोड उदाहरण है:

 $path = "path/to/file.pdf"; $filename = "file.pdf"; header('Content-Transfer-Encoding: binary'); // For Gecko browsers mainly header('Last-Modified: ' . gmdate('D, d MYH:i:s', filemtime($path)) . ' GMT'); header('Accept-Ranges: bytes'); // Allow support for download resume header('Content-Length: ' . filesize($path)); // File size header('Content-Encoding: none'); header('Content-Type: application/pdf'); // Change the mime type if the file is not PDF header('Content-Disposition: attachment; filename=' . $filename); // Make the browser display the Save As dialog readfile($path); // This is necessary in order to get it to actually download the file, otherwise it will be 0Kb 

ध्यान दें कि यह केवल HTTP प्रोटोकॉल का एक एक्सटेंशन है; कुछ ब्राउज़र वैसे भी इसे अनदेखा कर सकते हैं।

यह वास्तव में एक पुराना धागा है, जिस पर मैं ठोकर खा रहा हूं इसलिए मुझे यकीन है कि यह सब अब तक लगा है। अगर यह वही मुद्दा था और एक ऐसा समाधान पाया जिसने अब तक महान काम किया है। आप अपने .htaccess फ़ाइल में निम्नलिखित कोड डाल:

 <FilesMatch "\.(?i:pdf)$"> ForceType application/octet-stream Header set Content-Disposition attachment </FilesMatch> 

http://www.tipsandtricks-hq.com/forum/topic/force-a-file-to-download-instead-of-showing-up-in-the-browser से आया

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

BTW महान सवाल, मैं भी एक उत्तर के लिए देख रहा था, क्योंकि अधिकांश ब्राउज़र-एम्बेडेड पीडीएफ प्लग इन कुछ भी प्रदर्शित करने के लिए इतने लंबे समय लेते हैं (और पीडीएफ लोड होने पर ब्राउज़र को अक्सर लटकाएगा)।

आम तौर पर ऐसा होता है, क्योंकि कुछ ब्राउज़र सेटिंग्स या प्लग-इन सीधे एक समान विंडो में पीडीएफ खोलते हैं जैसे कि एक सरल वेब-पेज। यह आपकी सहायता कर सकता है मैंने कुछ सालों पहले PHP में इसे किया है लेकिन, वर्तमान में मैं उस मंच पर काम नहीं कर रहा हूं

 <?php if (isset($_GET['file'])) { $file = $_GET['file'] ; if (file_exists($file) && is_readable($file) && preg_match('/\.pdf$/',$file)) { header('Content-type: application/pdf'); header("Content-Disposition: attachment; filename=\"$file\""); readfile($file); } } else { header("HTTP/1.0 404 Not Found"); echo "<h1>Error 404: File Not Found: <br /><em>$file</em></h1>"; } ?> 

डाउनलोड को as.php के रूप में सहेजें

इस छोटे से स्निपेट को अपने सर्वर पर कहीं और एक PHP फ़ाइल के रूप में सहेजें और आप सीधे इसे प्रदर्शित करने के बजाय ब्राउज़र में फ़ाइल डाउनलोड करने के लिए इसका उपयोग कर सकते हैं। यदि आप पीडीएफ के अलावा अन्य फ़ाइलों की सेवा करना चाहते हैं, तो निकालें या पंक्ति 5 को संपादित करें

आप इसे इस तरह उपयोग कर सकते हैं:

अपने HTML फ़ाइल में निम्न लिंक जोड़ें।

 <a href="download.php?file=my_pdf_file.pdf">Download the cool PDF.</a> 

से संदर्भ: इस ब्लॉग

मुझे फ़ायरफ़ॉक्स के लिए एक बहुत ही आसान समाधान मिला (केवल प्रत्यक्ष href के बजाय रिश्तेदार के साथ काम करता है): टाइप करें = "एप्लिकेशन / ओकटैट-स्ट्रीम"

 <a href="./file.pdf" id='example' type="application/octet-stream">Example</a> 

अपने .htaccess फ़ाइल में इस पंक्ति को जोड़ने का प्रयास करें

 AddType application/octet-stream .pdf 

ऐसा करने का एक बहुत ही आसान तरीका है, यदि आपको अपने पृष्ठ पर एक लिंक के लिए डाउनलोड करने की आवश्यकता है, तो href-link में HTML5 डाउनलोड-विशेषता का उपयोग करना है।

देखें: http://davidwalsh.name/download-attribute

इसके साथ आप उस फ़ाइल का नाम बदल सकते हैं जिसे उपयोगकर्ता डाउनलोड करेगा और साथ ही यह डाउनलोड को मजबूर करेगा।

यह एक अच्छा अभ्यास है या नहीं, यह एक बहस हुई है, लेकिन मेरे मामले में मेरे पास एक पीडीएफ फाइल के लिए एक एम्बेडेड दर्शक है और दर्शक एक डाउनलोड लिंक प्रदान नहीं करता है, इसलिए मुझे एक अलग से प्रदान करना होगा। यहां मैं यह सुनिश्चित करना चाहता हूं कि उपयोगकर्ता को वेब ब्राउजर में पीडीएफ खोला न जाए, जो भ्रामक होगा।

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

एक सर्वर पक्ष समाधान अधिक संगत है, जब तक कि "डाउनलोड" विशेषता सभी ब्राउज़रों में कार्यान्वित नहीं हो जाती।

एक अजगर का उदाहरण एक भर्ती के लिए कस्टम HTTP अनुरोध हैंडलर हो सकता है। लिंक्स, जो फाईलस्टोर को इंगित करता है, इस तरह उत्पन्न होती हैं:

http://www.myfilestore.com/filestore/13/130787e71/download_as/desiredName.pdf

यहां कोड है:

 class HTTPFilestoreHandler(SimpleHTTPRequestHandler): def __init__(self, fs_path, *args): self.fs_path = fs_path # filestore path SimpleHTTPRequestHandler.__init__(self, *args) def send_head(self): # overwrite SimpleHTTPRequestHandler.send_head to force download name path = self.path get_index = (path == '/') self.log_message("path: %s" % path) if '/download_as/' in path: p_parts = path.split('/download_as/') assert len(p_parts) == 2, 'Bad download link:' + path path, download_as = p_parts path = self.translate_path(path ) f = None if os.path.isdir(path): if not self.path.endswith('/'): # redirect browser - doing basically what apache does self.send_response(301) self.send_header("Location", self.path + "/") self.end_headers() return None else: return self.list_directory(path) ctype = self.guess_type(path) try: f = open(path, 'rb') except IOError: self.send_error(404, "File not found") return None self.send_response(200) self.send_header("Content-type", ctype) fs = os.fstat(f.fileno()) self.send_header("Expires", '0') self.send_header("Last-Modified", self.date_time_string(fs.st_mtime)) self.send_header("Cache-Control", 'must-revalidate, post-check=0, pre-check=0') self.send_header("Content-Transfer-Encoding", 'binary') if download_as: self.send_header("Content-Disposition", 'attachment; filename="%s"' % download_as) self.send_header("Content-Length", str(fs[6])) self.send_header("Connection", 'close') self.end_headers() return f class HTTPFilestoreServer: def __init__(self, fs_path, server_address): def handler(*args): newHandler = HTTPFilestoreHandler(fs_path, *args) newHandler.protocol_version = "HTTP/1.0" self.server = BaseHTTPServer.HTTPServer(server_address, handler) def serve_forever(self, *args): self.server.serve_forever(*args) def start_server(fs_path, ip_address, port): server_address = (ip_address, port) httpd = HTTPFilestoreServer(fs_path, server_address) sa = httpd.server.socket.getsockname() print "Serving HTTP on", sa[0], "port", sa[1], "..." httpd.serve_forever() 

बस अपने .htaccess फ़ाइल में नीचे कोड डाल दिया

 AddType application/octet-stream .csv AddType application/octet-stream .xls AddType application/octet-stream .doc AddType application/octet-stream .avi AddType application/octet-stream .mpg AddType application/octet-stream .mov AddType application/octet-stream .pdf 

या आप जावास्क्रिप्ट द्वारा चाल भी कर सकते हैं

 element.setAttribute( 'download', whatever_string_you_want ); 

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

एचटीएमएल कोड में फाइल नाम के बाद मैं ?forcedownload=1

यह मेरे लिए एक डायलॉग बॉक्स ट्रिगर करने या डाउनलोड करने के लिए आसान तरीका है

मुझे बस उस समस्या के साथ एक बहुत ही समान समस्या थी कि मुझे ज़िपफ़ाइल के अंदर फ़ाइलों के लिए डाउनलोड लिंक बनाने की आवश्यकता है मैंने पहली बार एक अस्थायी फ़ाइल बनाने की कोशिश की, फिर अस्थायी फ़ाइल का लिंक प्रदान किया, लेकिन यह पाया गया कि कुछ ब्राउज़र केवल डाउनलोड करने के बजाय सामग्री (एक सीएसवी एक्सेल फाइल) प्रदर्शित करेंगे अंततः मुझे सर्वलेट का उपयोग करके समाधान मिला। यह टॉमकेट और कांचफिश पर दोनों काम करता है, और मैंने इसे आईई 10 और क्रोम पर कोशिश की। सर्वलेट ज़िप फ़ाइल के लिए पूर्ण पथ नाम इनपुट के रूप में लेती है, और ज़िप के अंदर फ़ाइल का नाम जिसे डाउनलाओड किया जाना चाहिए। मेरी जेएसपी फ़ाइल के अंदर मुझे एक मेज है जिसमें सभी फाइलों को ज़िप के अंदर प्रदर्शित किया गया है, लिंक के साथ: onclick='download?zip=<%=zip%>&csv=<%=csv%>'

सर्वलेट कोड डाउनलोड में है। जावा:

 package myServlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.zip.*; import java.util.*; // Extend HttpServlet class public class download extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); // now we can write to the client String filename=request.getParameter("csv"); String zipfile=request.getParameter("zip"); String aLine=""; response.setContentType("application/x-download"); response.setHeader( "Content-Disposition", "attachment; filename=" + filename ); // force 'save-as' ZipFile zip = new ZipFile(zipfile); for (Enumeration e = zip.entries(); e.hasMoreElements();) { ZipEntry entry = (ZipEntry) e.nextElement(); if(entry.toString().equals(filename)) { InputStream is = zip.getInputStream(entry); BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"), 65536); while ((aLine=br.readLine())!=null) { out.println(aLine); } is.close(); break; } } } } 

टॉमकेट पर संकलन करने के लिए आपको टमाटर \ lib \ servlet-api.jar या glassfish पर क्लासपाथ की जरूरत है: कांचफिश \ lib \ j2ee.jar लेकिन या तो दोनों एक पर काम करेंगे। आपको web.xml में अपना सर्वोलेट सेट करना होगा

बड़े पीडीएफ के साथ ब्राउज़र मोज़िला टूल> विकल्प> एप्लीकेशन> में लटका हुआ है, फिर एक्शन में एडोब एक्रोबेट दस्तावेज़ ड्रॉप डाउन में, हमेशा से यह पूछें कि यह मेरे लिए काम नहीं करता है, इसलिए क्या काम किया गया था:

टूल> ऐड-ऑन> एडोब एक्रोबेट (फ़ायरफ़ॉक्स के लिए एडोब पीडीएफ प्लगइन)> अक्षम करें अब मैं ई-बुक डाउनलोड करने के लिए एबल का हूँ!