इंस्टॉल किए गए वेब ऐप्लिकेशन को फ़ाइल हैंडलर बनने की अनुमति दें

ऑपरेटिंग सिस्टम के साथ ऐप्लिकेशन को फ़ाइल हैंडलर के तौर पर रजिस्टर करें.

अब वेब ऐप्लिकेशन फ़ाइलें पढ़ने और लिखने में सक्षम हैं, तो अगला तर्क डेवलपर को इन वेब ऐप्लिकेशन को उन फ़ाइलों के लिए फ़ाइल हैंडलर के तौर पर तय करने की अनुमति देनी होगी जिन्हें उनके ऐप्लिकेशन बनाने और प्रोसेस करने में मदद करता है. फ़ाइल मैनेज करने वाले एपीआई की मदद से, यह काम आसानी से किया जा सकता है. टेक्स्ट रजिस्टर करने के बाद Editor ऐप्लिकेशन को फ़ाइल हैंडलर के तौर पर इंस्टॉल किया जा सकता है और इसे इंस्टॉल करने के बाद, macOS पर .txt फ़ाइल पर राइट क्लिक किया जा सकता है और "Get Info" चुनें इसके बाद, ओएस को निर्देश देगा कि वह .txt फ़ाइलों को इस ऐप्लिकेशन के साथ हमेशा इस तरह खोले डिफ़ॉल्ट.

फ़ाइल मैनेज करने वाले एपीआई के लिए, इस्तेमाल के सुझाए गए उदाहरण

उन साइटों के उदाहरण जो इस एपीआई का इस्तेमाल कर सकते हैं:

  • ऑफ़िस ऐप्लिकेशन, जैसे कि टेक्स्ट एडिटर, स्प्रेडशीट ऐप्लिकेशन, और स्लाइड शो बनाने वाले क्रिएटर्स.
  • ग्राफ़िक्स एडिटर और ड्रॉइंग टूल.
  • वीडियो गेम लेवल एडिटर टूल.

फ़ाइल मैनेज करने वाले एपीआई को इस्तेमाल करने का तरीका

प्रोग्रेसिव एन्हैंसमेंट

हर फ़ाइल मैनेज करने वाले एपीआई को पॉलीफ़िल नहीं किया जा सकता. वेब से फ़ाइलें खोलने की सुविधा ऐप्लिकेशन को दो अन्य तरीकों से हासिल किया जा सकता है:

  • वेब शेयर टारगेट एपीआई की मदद से डेवलपर, अपने ऐप्लिकेशन को शेयर टारगेट के तौर पर सेट कर सकते हैं ताकि ऑपरेटिंग सिस्टम की शेयर शीट से फ़ाइलों को खोला जा सके.
  • File System Access API को फ़ाइल खींचने और छोड़ने की सुविधा के साथ इंटिग्रेट किया जा सकता है. इसलिए डेवलपर पहले से खुले हुए ऐप्लिकेशन में, छोड़ी गई फ़ाइलों को हैंडल कर सकते हैं.

ब्राउज़र समर्थन

ब्राउज़र सहायता

  • Chrome: 102. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • एज: 102. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • Firefox: समर्थित नहीं. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • Safari: समर्थित नहीं. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

सोर्स

सुविधा की पहचान

यह देखने के लिए कि फ़ाइल मैनेज करने वाला एपीआई काम करता है या नहीं, इसका इस्तेमाल करें:

if ('launchQueue' in window && 'files' in LaunchParams.prototype) {
  // The File Handling API is supported.
}

फ़ाइल हैंडलिंग एपीआई का जानकारी देने वाला हिस्सा

सबसे पहले, वेब ऐप्लिकेशन को अपने वेब ऐप्लिकेशन मेनिफ़ेस्ट में, साफ़ तौर पर जानकारी देनी होगी वे किस तरह की फ़ाइलें मैनेज कर सकते हैं. फ़ाइल मैनेज करने वाला एपीआई, वेब ऐप्लिकेशन मेनिफ़ेस्ट को नए वर्शन के साथ बेहतर बनाता है "file_handlers" नाम की प्रॉपर्टी, जो फ़ाइल हैंडलर के कलेक्शन को स्वीकार करती है. फ़ाइल हैंडलर है इन प्रॉपर्टी वाला एक ऑब्जेक्ट:

  • ऐसी "action" प्रॉपर्टी जो ऐप्लिकेशन के स्कोप में मौजूद यूआरएल की वैल्यू के तौर पर ले जाती है.
  • ऐसी "accept" प्रॉपर्टी जिसमें MIME टाइप वाला ऑब्जेक्ट, फ़ाइल एक्सटेंशन की कुंजियों और सूचियों के तौर पर वैल्यू.
  • ImageResource कलेक्शन वाली "icons" प्रॉपर्टी आइकॉन. कुछ ऑपरेटिंग सिस्टम, फ़ाइल टाइप असोसिएशन को ऐसा आइकॉन दिखाने की अनुमति देते हैं जो सिर्फ़ संबंधित ऐप्लिकेशन आइकॉन, बल्कि उस फ़ाइल टाइप के इस्तेमाल से जुड़ा एक खास आइकॉन ऐप के साथ.
  • "launch_type" प्रॉपर्टी, जो तय करती है कि एक ही फ़ाइल में कई फ़ाइलों को खोला जाना चाहिए या नहीं में क्लाइंट या एक से अधिक क्लाइंट में है. डिफ़ॉल्ट वैल्यू "single-client" है. अगर उपयोगकर्ता कई फ़ाइलें खोलता है और अगर फ़ाइल हैंडलर के साथ "multiple-clients" के साथ इस तरह एनोटेट किया गया है "launch_type" के दौरान, एक से ज़्यादा ऐप्लिकेशन लॉन्च होंगे. साथ ही, हर लॉन्च के लिए, LaunchParams.files कलेक्शन (और नीचे देखें) में सिर्फ़ एक एलिमेंट होगा.

नीचे दिए गए उदाहरण में, वेब ऐप्लिकेशन मेनिफ़ेस्ट का सिर्फ़ वह हिस्सा दिखाया गया है जो काम का है. ज़्यादा साफ़:

{
  "file_handlers": [
    {
      "action": "/open-csv",
      "accept": {
        "text/csv": [".csv"]
      },
      "icons": [
        {
          "src": "csv-icon.png",
          "sizes": "256x256",
          "type": "image/png"
        }
      ],
      "launch_type": "single-client"
    },
    {
      "action": "/open-svg",
      "accept": {
        "image/svg+xml": ".svg"
      },
      "icons": [
        {
          "src": "svg-icon.png",
          "sizes": "256x256",
          "type": "image/png"
        }
      ],
      "launch_type": "single-client"
    },
    {
      "action": "/open-graf",
      "accept": {
        "application/vnd.grafr.graph": [".grafr", ".graf"],
        "application/vnd.alternative-graph-app.graph": ".graph"
      },
      "icons": [
        {
          "src": "graf-icon.png",
          "sizes": "256x256",
          "type": "image/png"
        }
      ],
      "launch_type": "multiple-clients"
    }
  ]
}

यह एक काल्पनिक ऐप्लिकेशन के लिए है, जो कॉमा लगाकर अलग की गई वैल्यू (.csv) फ़ाइलों को /open-csv, /open-svg पर स्केलेबल वेक्टर ग्राफ़िक (.svg) फ़ाइलें और तैयार किया गया Grafr फ़ाइल फ़ॉर्मैट /open-graf पर एक्सटेंशन के रूप में .grafr, .graf या .graph में से किसी के साथ भी. पहले दो .

फ़ाइल मैनेज करने वाले एपीआई का ज़रूरी हिस्सा

अब ऐप्लिकेशन ने यह एलान कर दिया है कि वह कौनसी फ़ाइलों को हैंडल कर सकता है. ऐसा थ्योरी के दायरे में आने वाले यूआरएल के लिए किया जाता है. आने वाली फ़ाइलों का इस्तेमाल करना ज़रूरी है. launchQueue यहां से आता है खेलने में मदद करता है. लॉन्च की गई फ़ाइलों को ऐक्सेस करने के लिए, साइट को window.launchQueue के लिए उपभोक्ता तय करना होगा ऑब्जेक्ट है. लॉन्च तब तक सूची में नहीं रहते, जब तक वे बताए गए उपभोक्ता से हैंडल नहीं किए जाते. इसके बाद, लॉन्च शुरू किया जाता है हर लॉन्च के लिए सिर्फ़ एक बार. इस तरह से, हर लॉन्च को हैंडल किया जाता है, चाहे उपभोक्ता तय किया गया था.

if ('launchQueue' in window && 'files' in LaunchParams.prototype) {
  launchQueue.setConsumer((launchParams) => {
    // Nothing to do when the queue is empty.
    if (!launchParams.files.length) {
      return;
    }
    for (const fileHandle of launchParams.files) {
      // Handle the file.
    }
  });
}

DevTools सहायता

फ़िलहाल, यह सुविधा उपलब्ध नहीं है. हालांकि, मैंने एक सुविधा का अनुरोध कर सकते हैं जोड़ा गया.

डेमो

मैंने कार्टून शैली की ड्रॉइंग ऐप्लिकेशन Excalidraw में, फ़ाइल मैनेज करने की सहायता जोड़ दी है. इसकी जांच करने के लिए, आपको पहले Excalidraw इंस्टॉल करना होगा. जब आप इसके साथ कोई फ़ाइल बनाते हैं और उसे किसी स्थान पर संग्रहित करते हैं है, तो आप फ़ाइल को डबल क्लिक या राइट क्लिक से खोल सकते हैं और फिर "एक्सकलिड्रा" का इस्तेमाल करें. अगर आपको सोर्स में लागू करने की प्रोसेस को जानना है, तो कोड.

Excalidraw फ़ाइल के साथ, macOS फ़ाइंडर विंडो.
अपने ऑपरेटिंग सिस्टम के फ़ाइल एक्सप्लोरर में, किसी फ़ाइल पर दो बार क्लिक करें या उस पर राइट क्लिक करें.
किसी फ़ाइल पर राइट क्लिक करने पर दिखने वाला संदर्भ मेन्यू. इसमें, Excalidraw आइटम हाइलाइट किया गया होता है.
Excalidraw, .excalidraw फ़ाइलों के लिए डिफ़ॉल्ट फ़ाइल हैंडलर है.

सुरक्षा

Chrome टीम ने फ़ाइल हैंडलिंग एपीआई को डिज़ाइन और लागू किया है. इसके लिए, शक्तिशाली वेब प्लैटफ़ॉर्म सुविधाओं के ऐक्सेस को कंट्रोल करना में, जिसमें उपयोगकर्ता के कंट्रोल, पारदर्शिता, और एर्गोनॉमिक्स शामिल हैं.

अनुमतियां, अनुमतियां बनी रहती हैं, और फ़ाइल हैंडलर से जुड़े अपडेट

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

यह अनुमति हर बार तब तक दिखेगी, जब तक उपयोगकर्ता फ़ाइल को मैनेज करने के लिए, अनुमति दें या ब्लॉक करें पर क्लिक नहीं करता नहीं कर सकता या प्रॉम्प्ट को तीन बार अनदेखा कर देता है (इसके बाद Chromium अनुमति). चुनी गई सेटिंग, पीडब्ल्यूए के बंद होने और फिर से खुलने पर हर जगह लागू रहेगी.

मेनिफ़ेस्ट के अपडेट होने और "file_handlers" सेक्शन में किए गए बदलावों का पता चलने पर, ये अनुमतियां को रीसेट कर दिया जाएगा.

अटैक वेक्टर की एक बड़ी कैटगरी होती है. इसे वेबसाइटों को फ़ाइलों का ऐक्सेस देकर खोला जाता है. इनकी जानकारी File System Access API पर लेख पढ़ें. कॉन्टेंट बनाने फ़ाइल मैनेज करने वाले एपीआई से, फ़ाइल सिस्टम के मुकाबले मिलने वाली अतिरिक्त सुरक्षा की क्षमता Access API की मदद से, ऑपरेटिंग सिस्टम में पहले से मौजूद ऐप्लिकेशन के ज़रिए कुछ फ़ाइलों को ऐक्सेस दिया जा सकता है यूज़र इंटरफ़ेस (यूआई), जो कि वेब ऐप्लिकेशन की ओर से दिखाए गए फ़ाइल पिकर से अलग है.

इसके बावजूद, जोखिम हो सकता है कि उपयोगकर्ता अनजाने में किसी वेब ऐप्लिकेशन को किसी फ़ाइल का ऐक्सेस दे दें उसे खोल रही हूँ. हालांकि, आम तौर पर यह समझा जाता है कि किसी फ़ाइल को खोलने से ऐप्लिकेशन को फ़ाइल को पढ़ने और/या उसमें बदलाव करने के लिए खोला गया हो. इसलिए, फ़ाइल को खोलने के लिए उपयोगकर्ता का साफ़ तौर पर विकल्प किसी इंस्टॉल किए गए ऐप्लिकेशन में, जैसे कि "इसके साथ खोलें..." संदर्भ मेन्यू, जिसे ज़रूरत के मुताबिक पढ़ा जा सकता है ऐप्लिकेशन पर भरोसा होने का सिग्नल.

डिफ़ॉल्ट हैंडलर की चुनौतियां

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

ऐप्लिकेशन पर उपयोगकर्ताओं के कंट्रोल की जानकारी

इस शर्त में बताया गया है कि ब्राउज़र को हर उस साइट को रजिस्टर नहीं करना चाहिए जो फ़ाइलों को फ़ाइल के तौर पर हैंडल कर सकती है हैंडलर. इसके बजाय, फ़ाइल मैनेज करने के रजिस्ट्रेशन के लिए, इंस्टॉलेशन की सुरक्षा की ज़रूरत नहीं होनी चाहिए और ऐसा कभी नहीं होना चाहिए उपयोगकर्ता की पुष्टि किए बिना, खास तौर पर तब, जब किसी साइट को डिफ़ॉल्ट हैंडलर के तौर पर सेट करना हो. इसके बजाय .json जैसे मौजूदा एक्सटेंशन को हाइजैक करने के बजाय, उपयोगकर्ता के पास शायद पहले से ही डिफ़ॉल्ट हैंडलर मौजूद हो के लिए पंजीकृत हैं, तो साइटों को अपने एक्सटेंशन बनाने के बारे में विचार करना चाहिए.

पारदर्शिता

सभी ऑपरेटिंग सिस्टम उपयोगकर्ताओं को वर्तमान फ़ाइल संयोजन बदलने की अनुमति देते हैं. यह जानकारी दायरे से बाहर है क्लिक किया है.

सुझाव/राय दें या शिकायत करें

Chrome टीम, फ़ाइल मैनेज करने वाले एपीआई के इस्तेमाल से जुड़े आपके अनुभव जानना चाहती है.

हमें एपीआई के डिज़ाइन के बारे में बताएं

क्या एपीआई में ऐसा कुछ है जो आपकी उम्मीद के मुताबिक काम नहीं करता? या कुछ तरीके उपलब्ध नहीं हैं या प्रॉपर्टी से जोड़ना होगा? सुरक्षा से जुड़े सवाल पूछने या टिप्पणी करने के लिए मॉडल?

  • इससे जुड़े GitHub रेपो पर स्पेक्ट समस्या दर्ज करें या अपने विचारों को किसी मौजूदा रिपोर्ट में जोड़ें समस्या.

लागू करने से जुड़ी समस्या की शिकायत करना

क्या आपको Chrome को लागू करने में कोई गड़बड़ी मिली? या क्या लागू करने का तरीका, स्पेसिफ़िकेशन से अलग है?

  • new.crbug.com पर जाकर, गड़बड़ी की शिकायत करें. पक्का करें कि आपने इसमें ज़्यादा से ज़्यादा जानकारी दी हो इसे फिर से बनाने के आसान निर्देश देख सकते हैं और UI>Browser>WebAppInstalls>FileHandling कॉम्पोनेंट बॉक्स में. Glitch, जल्दी और आसानी से शेयर करने के लिए बेहतरीन काम करता है प्रतिनिधि

यह एपीआई काम करता है

क्या आपको फ़ाइल हैंडलिंग एपीआई इस्तेमाल करना है? आपके सार्वजनिक समर्थन से Chrome टीम को सुविधाओं को प्राथमिकता देता है और ब्राउज़र के अन्य वेंडर को दिखाता है कि उनकी मदद करना कितना ज़रूरी है.

मददगार लिंक

स्वीकार की गई

फ़ाइल हैंडलिंग एपीआई को Eric Willigers ने तय किया था, जे हैरिस, और रेम्स खौरी. इस लेख की समीक्षा इन्होंने की है जो मेडली.