मैं लंबे समय से डाउनलोड छवियों को बैच करने के लिए क्रोम एक्सटेंशन बनाना चाहता था। फिर भी हर बार मैं निराश हो गया क्योंकि एकमात्र प्रतीत होता है कि लागू एनपीएपीआई है, जो क्रोम और फ़ायरफ़ॉक्स दोनों अब तक समर्थन करने की इच्छा नहीं रखते हैं।
मैं उन लोगों को सुझाव देता हूं जो इस पोस्ट के नीचे टिप्पणी Stackoverflow post पर देखने के लिए 'सेव-फाइल-ऑन-डिस्क' कार्यक्षमता को लागू करना चाहते हैं, तो मुझे इस पोस्ट के नीचे टिप्पणी बहुत मददगार है।
क्रोम 31+ के बाद से, chrome.downloads
एपीआई स्थिर हो गया। हम इसे प्रोग्रामेटिक रूप से फ़ाइल डाउनलोड करने के लिए उपयोग कर सकते हैं। यदि उपयोगकर्ता ने क्रोम सेटिंग में ask me before every download
अग्रिम विकल्प सेट नहीं किया है, तो हम पुष्टि करने के लिए उपयोगकर्ता को सूचित किए बिना फ़ाइल सहेज सकते हैं!
यहाँ है कि मैं क्या (विस्तार के पृष्ठभूमि पृष्ठ पर) का उपयोग है:
// remember to add "permissions": ["downloads"] to manifest.json
// this snippet is inside a onMessage() listener function
var imgurl = "https://www.google.com.hk/images/srpr/logo11w.png";
chrome.downloads.download({url:imgurl},function(downloadId){
console.log("download begin, the downId is:" + downloadId);
});
हालांकि यह एक दया है कि अभी भी क्रोम जब डाउनलोड पूरा एक Event
प्रदान नहीं करता है। जब डाउनलोड begin
सफलतापूर्वक (पर पूरा नहीं) chrome.downloads.download
के कॉलबैक फ़ंक्शन कहा जाता है
आधिकारिक दस्तावेज़ के बारे में chrome.downloads
here है।
यह समाधान के बारे में मेरा मूल विचार नहीं है, लेकिन मैंने यहां उम्मीद की है कि यह किसी के लिए कुछ उपयोग हो सकता है।
स्रोत
2014-03-01 10:50:13
पर काम करता है यह पहली बार नहीं है जब हम मुझे एनपीएपीआई पर रीडायरेक्ट कर रहे हैं। मैं इस पर एक नज़र डालूँगा। आपकी मदद के लिए धन्यवाद –
ध्यान दें कि यदि आप Google की गैलरी में एक्सटेंशन अपलोड करने की योजना बना रहे हैं, तो एनपीएपीआई का उपयोग करके आपके प्रकाशन में उनकी लंबी अवधि के लिए देरी होगी और यह स्वीकार नहीं किया जा सकता है। –
मैं मैक्स से सहमत हूं। प्रकाशन में देरी होगी क्योंकि इसकी मैन्युअल रूप से समीक्षा की जाएगी। यह सबसे अच्छा होगा यदि आपके पास बाहरी सर्वर है जिसे आप अपने एक्सटेंशन में एक्सेस दे सकते हैं और POST के माध्यम से डेटा अपलोड कर सकते हैं और इसे उचित हेडर के साथ GET के माध्यम से वापस ला सकते हैं। –