2009-05-07 9 views
6

क्या ff में www.example.com/example.pdf के लिए संवाद बॉक्स के रूप में सहेजने का कोई तरीका है? (मैं हेडर बदल नहीं सकता)हेडर बदलने के अलावा फ़ायरफ़ॉक्स में संवाद बॉक्स के रूप में सहेजने के लिए कैसे बल दें?

उत्तर

2

एकमात्र अन्य तरीका जिसे मैं सोच सकता हूं फ़ायरफ़ॉक्स सेटिंग्स को संशोधित कर रहा है। मुझे लगता है कि आप ऐसा नहीं कर सकते हैं।

संपादित करें:

मैं एक साथ एक क्लाइंट-साइड समाधान डेटा यूआरआई विचार पर आधारित पत्थर। यह base64 encoder के संशोधित संस्करण और binary XMLHTTPrequests के लिए एक तकनीक का उपयोग करता है स्क्रिप्ट पीडीएफ फ़ाइल डाउनलोड करता है, फिर बेस 64 एन्कोडर का उपयोग करके डेटा यूआरआई लिंक को गतिशील रूप से उत्पन्न करता है और रखता है।

जब आप ऑक्टेट स्ट्रीम एन्कोडिंग चाहते हैं तो यह उपयोगी होना चाहिए लेकिन सर्वर तक पहुंच नहीं है (जैसा ओपी के लिए मामला लगता है)।

नोट, मैंने hunts.pdf का उपयोग करके पोस्ट किया है, जिसे ओपी परीक्षण कर रहा था।

/** 
* 
* Base64 encode/decode 
* http://www.webtoolkit.info/ 
* 
**/ 

var Base64 = { 

    // private property 
    _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/=", 

    // public method for encoding 
    encode : function (input) { 
     var output = ""; 
     var chr1, chr2, chr2raw, chr3, chr3raw, enc1, enc2, enc3, enc4; 
     var i = 0; 

     //input = Base64._utf8_encode(input); 

     while (i < input.length) { 

      chr1 = input.charCodeAt(i++) & 0xFF; 
      chr2 = isNaN(chr2raw = input.charCodeAt(i++)) ? NaN : (chr2raw & 0xFF); 
      chr3 = isNaN(chr3raw = input.charCodeAt(i++)) ? NaN : (chr3raw & 0xFF); 

      enc1 = chr1 >> 2; 
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); 
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); 
      enc4 = chr3 & 63; 

      if (isNaN(chr2)) { 
       enc3 = enc4 = 64; 
      } else if (isNaN(chr3)) { 
       enc4 = 64; 
      } 

      output = output + 
      this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + 
      this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4); 

     } 

     return output; 
    } 
} 



// http://web.archive.org/web/20071103070418/mgran.blogspot.com/2006/08/downloading-binary-streams-with.html 
//fetches BINARY FILES synchronously using XMLHttpRequest 

load_url = function(url) { 
    var req = new XMLHttpRequest(); 
    req.open('GET',url,false); 
    //XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com] 
    req.overrideMimeType('text/plain; charset=x-user-defined'); 
    req.send(null); 

    if (req.status != 200){ 
    alert(req.status); 
    return ''; 
    } 
    return req.responseText; 
} 

    function getDataURI(filename) 
    { 
    var file = load_url(filename); 
    var uueFile = Base64.encode(file); 
    var uri = 'data:application/octet-stream;base64,' + encodeURIComponent(uueFile); 
    return uri; 
    } 

window.addEventListener("load", 
         function() 
         { 
         var link = getDataURI("foo.pdf"); 
         document.getElementById("myDiv").innerHTML += '<a href="' + link + '"><code>' + link + '</code></a><br><br>'; 
         } 
+0

नहीं :(ऐसा लगता है कि यह संभव होना चाहिए .... –

+0

@raj: यह वही है जो हेडर हैं। प्रतिक्रिया शरीर सामग्री है, हेडर एक सुझाव हैं कि इसके साथ क्या करना है (उदाहरण के लिए सामग्री । समाधान के लिए -Disposition) – Piskvor

+1

धन्यवाद मैं कोड का उपयोग करने की कोशिश की यहाँ कोड मैं प्रयोग किया जाता के नीचे है:। window.addEventListener ("लोड", function() { वर लिंक = getDataURI ("http : //www.google.com/ads/hunts.pdf "); document.getElementById (" myDiv ")।आंतरिक HTML + = '' + link + '

'; }

hello
दुर्भाग्य से, वहाँ html फ़ाइल पर कुछ भी नहीं शब्द को छोड़कर हैलो था। कोई पीडीएफ नहीं क्या मुझे कुछ और चाहिए? लिंक में –

4

यदि आप बेस 64 में क्लाइंट को फ़ाइल आउटपुट कर सकते हैं, तो आप डाउनलोड के लिए डेटा यूरिस का उपयोग कर सकते हैं।

location.href = 'data:application/octet-stream;base64,' + appendPDFContentHere 
OR 
<a href="data:application/octet-stream;base64,appendPDFContentHere">pdf</a> 

यह केवल गैर IE में काम करेंगे लेकिन ब्राउज़र लेकिन जैसा कि आप फ़ायरफ़ॉक्स के लिए अनुरोध किया है, यह अच्छी तरह से काम करना चाहिए।

संपादित करें:

उदाहरण के

दोनों नीचे बाइट्स एक PNG बनाने के लिए होते हैं। यदि आप पहले व्यक्ति पर क्लिक करते हैं तो आप छवि को सामान्य रूप से ब्राउज़र में देख सकते हैं। हालांकि, यदि आप दूसरे लिंक पर क्लिक करते हैं, तो यह आपको छवि डाउनलोड करने के लिए मजबूर करेगा। इसे एक .png के रूप में सहेजें और आप देखेंगे कि वे एक ही छवियां हैं। छवि/png

download image (preview shortened url) - माइम प्रकार: आवेदन/ओकटेट धारा

आप माइम प्रकार - दो लिंक में फर्क सिर्फ इतना है माइम प्रकार

view image (preview shortened url) है पूछा कि आपने ऐपेंड पीडीएफसीओन्टेंट के स्थान पर क्या रखा है और इसका उत्तर बेस 64-एन्कोडेड बाइट्स है जो पीडीएफ बनाता है। उदाहरण के लिए उपयोग की गई छवि को एन्कोड करने के लिए मैंने इस ऑनलाइन base64 encoder का उपयोग किया था।

+0

मुझे "यहां पीडीएफ सामग्री संलग्न करना" में क्या रखा जाना चाहिए? संपूर्ण पीडीएफ? –

+0

या सिर्फ पीडीएफ के लिए यूआरएल? –

+0

नहीं, अगर आप केवल यूआरएल करते हैं तो आप mimetype (एप्लिकेशन/ऑक्टेट-स्ट्रीम) नहीं जोड़ सकते हैं। –