2010-06-19 13 views
21

का उपयोग करके एक पीडीएफ लिंक डाउनलोड करें मान लीजिए कि हमारे पास एक पीडीएफ लिंक है "http://manuals.info.apple.com/en/iphone_user_guide.pdf" (उदाहरण के लिए और आपको यह बताने के लिए कि फ़ाइल मेरे सर्वर पर नहीं है, मेरे पास केवल लिंक है) ... अब मुझे अपनी साइट पर एक बटन प्रदान करना है जो फ़ाइल डाउनलोड करेगा।बल जावास्क्रिप्ट/AJAX/jquery

मैंने window.open, href आदि विधियों जैसी विभिन्न चीजों को आजमाया है लेकिन यह अन्य विंडो पर लिंक खोलता है। मुझे पता है क्योंकि अब सभी ब्राउज़र एक एडोब प्लगइन के साथ आता है जो इसे किसी अन्य विंडो में खुलता है, लेकिन फिर भी मैं क्लाइंट साइड स्क्रिप्टिंग के माध्यम से इसे खोलने के बजाय उपयोगकर्ता को डाउनलोड करने का विकल्प नहीं देता ..

कृपया मदद करें .. धन्यवाद

+0

आप इस एक जाँच करते थे बजाय खोलने की डाउनलोड कर देगा है? http://stackoverflow.com/questions/349067/download-a-file-using-javascript – Fopfong

उत्तर

19

उपयोग एचटीएमएल 5 "डाउनलोड" विशेषता

<a href="iphone_user_guide.pdf" download="iPhone User's Guide.PDF">click me</a> 

चेतावनी: इस लेखन के रूप में, IE/सफारी में काम नहीं करता है, देखें: caniuse.com/#search=download

संपादित करें: यदि आप एक वास्तविक लिए देख रहे हैं जावास्क्रिप्ट समाधान कृपया देखें lajarre's answer

+0

यह HTML4 में कैसे मदद करता है? क्या ऐसा करने का कोई और तरीका है? – Jacques

+0

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

+0

caniuse के अनुसार http://caniuse.com/#search=download यह वर्तमान में सफारी में समर्थित नहीं है। मैं बस अनुमान लगा रहा हूं, लेकिन आप इसे प्राप्त करने के लिए jquery.ajax की 'सामग्री टाइप' का उपयोग करने में सक्षम हो सकते हैं। अन्यथा यदि आपके पास सर्वर पर नियंत्रण है तो आप इसे बाइनरी माइम प्रकार के साथ फ़ाइल भेजने के लिए कह सकते हैं। – sarink

7

जावास्क्रिप्ट के साथ यह असंभव नहीं है (?) बहुत मुश्किल है। मैं कुछ प्रकार की कोड-बैक भाषा जैसे PHP, C#, या Java का उपयोग करने का सुझाव दूंगा। आप PHP का उपयोग करने के लिए गए थे, तो आप, पेज में करने के लिए अपने बटन पदों, कुछ इस तरह कर सकता है:

<?php 
header('Content-type: application/pdf'); 
header('Content-disposition: attachment; filename=filename.pdf'); 
readfile("http://manuals.info.apple.com/en/iphone_user_guide.pdf"); 
?> 

यह भी (http://www.phpbuilder.com/board/showthread.php?t=10149735 से) जे एस के लिए काम करने के लिए लगता है:

<body> 
<script> 
function downloadme(x){ 
myTempWindow = window.open(x,'','left=10000,screenX=10000'); 
myTempWindow.document.execCommand('SaveAs','null','download.pdf'); 
myTempWindow.close(); 
} 
</script> 

<a href=javascript:downloadme('http://manuals.info.apple.com/en/iphone_user_guide.pdf');>Download this pdf</a> 
</body> 
+0

यह काम नहीं कर रहा है। –

30

यहाँ (मेरे जैसे लोग खिताब के लिए एक जवाब के लिए देख रहे थे के लिए) एक जावास्क्रिप्ट समाधान है:

function SaveToDisk(fileURL, fileName) { 
    // for non-IE 
    if (!window.ActiveXObject) { 
     var save = document.createElement('a'); 
     save.href = fileURL; 
     save.target = '_blank'; 
     save.download = fileName || 'unknown'; 

     var evt = new MouseEvent('click', { 
      'view': window, 
      'bubbles': true, 
      'cancelable': false 
     }); 
     save.dispatchEvent(evt); 

     (window.URL || window.webkitURL).revokeObjectURL(save.href); 
    } 

    // for IE < 11 
    else if (!! window.ActiveXObject && document.execCommand)  { 
     var _window = window.open(fileURL, '_blank'); 
     _window.document.close(); 
     _window.document.execCommand('SaveAs', true, fileName || fileURL) 
     _window.close(); 
    } 
} 

स्रोत: http://muaz-khan.blogspot.fr/2012/10/save-files-on-disk-using-javascript-or.html

दुर्भाग्य से IE11, जो नए MouseEvent स्वीकार नहीं कर रहा साथ मेरे लिए काम कर रहे। मुझे लगता है कि इस मामले में निम्नलिखित का उपयोग करें:

//... 
try { 
    var evt = new MouseEvent(...); 
} catch (e) { 
    window.open(fileURL, fileName); 
} 
//... 
+1

त्रुटि कोई फ़ाइल में विफल रहा है <बटन वर्ग = "btn btn-XS" onclick = "SaveToDisk (" http://cloudagent-im.s3.amazonaws.com/042015/FaCvns7xSIt1B313.mp3 ", " FaCvns7xSIt1B313.mp3 ") "> Bugfixer

+0

विधि के लिए धन्यवाद। यह फ़ाइलों को "अज्ञात" के रूप में सहेजता है, मैंने इसे फ़ाइलURL में बदल दिया है, इसे इसे "http --- localhost-ielts/gtreading-workbook-Activity_3_1.pdf" के रूप में सहेजा गया है, इसे किसी भी विचार को कैसे ठीक किया जाए? – hijacker83

+0

धन्यवाद! इससे मेरा काम बनता है। :) –

0

जावास्क्रिप्ट उपयोग घटना args मानदंड की विधि preventDefault() में।

<a href="no-script.html">Download now!</a> 

$('a').click(function(e) { 
    e.preventDefault(); // stop the browser from following 
    window.location.href = 'downloads/file.pdf'; 
}); 
0

तो इनको एक विकल्प यह सब पीडीएफ लिंक ब्राउज़र

<FilesMatch "\.(?i:pdf)$"> 
    ForceType application/octet-stream 
    Header set Content-Disposition attachment 
</FilesMatch> 
संबंधित मुद्दे