- file:/// ju lejon të lundroni në sistemin lokal të skedarëve nga shfletuesi në Dritaret y android.
- API-ja e Qasjes në Sistemin e Skedarëve ofron aftësi të përparuara leximi dhe shkrimi për skedarët dhe drejtoritë lokale.
- Siguria bazohet në lejet e qarta të përdoruesit dhe kontroll të qartë mbi rrugët që ekspozohen.
- Ekzistojnë polifill-e dhe biblioteka që e kombinojnë këtë API me metodat klasike kur nuk ka mbështetje native.

Përdorimi i shfletuesit sikur të ishte një eksplorues i vogël skedarësh është i mundur dhe, nëse përdoret siç duhet, mund të jetë jashtëzakonisht i dobishëm. Nga hapja e një dokumenti të thjeshtë lokal me file:/// deri te puna me API-n e fuqishëm të Qasjes në Sistemin e SkedarëveNë ditët e sotme, shfletuesit modernë ofrojnë shumë më tepër mundësi sesa përdorim zakonisht.
Gjatë gjithë këtij udhëzuesi do të shohim, hap pas hapi, Si të hapni skedarët lokalë në shfletuesi i uebit duke përdorur file:/// në Chrome, Edge dhe FirefoxSi ta shndërroni shfletuesin tuaj në një eksplorues bazë skedarësh në Windows dhe Android, dhe si mund të shkojnë zhvilluesit një hap më tej duke përdorur File System Access API për të lexuar, shkruar dhe menaxhuar skedarë dhe dosje lokale nga një aplikacion web.
Çfarë do të thotë në të vërtetë të hapësh skedarë lokalë me file:///?
Kur shkruani një rrugë që fillon me file:/// në shiritin e adresës së shfletuesit, Po i thua shfletuesit të hyjë në sistemin lokal të skedarëve në vend të internetit.Domethënë, për të hapur diçka që është në pajisjen tuaj: një hard disk, memorie të brendshme ose një kartë SD.
Kjo skemë e veçantë URL (file:///) Funksionon në mënyrë të ngjashme me shkrimin C: në Windows ose / në Linux dhe macOSËshtë thjesht i përshtatur logjikës së shfletuesit. Prej andej, ajo që do të shihni është një lloj liste dosjesh dhe skedarësh, pa asnjë hollësi: emra, madhësi, datë modifikimi dhe pak gjëra të tjera.
Sigurisht, duhet të kihet parasysh se Shfletuesit i trajtojnë këto rrugë lokale me shumë kufizime sigurie.Për shembull, një faqe interneti që vizitoni nga interneti nuk mundet, si parazgjedhje, të lexojë lirisht skedarët tuaj lokalë vetëm sepse hapni një URL me file:///Një gjest ose leje e qartë nga përdoruesi është gjithmonë e nevojshme.
Përdorimi i shfletuesit si një eksplorues skedarësh në Android
Shumë telefona Android nuk përfshijnë një menaxher të mirë skedarësh nga prodhuesi, ose ai që vjen i parainstaluar është mjaft i kufizuar. Në këto raste, Përdorimi i Chrome, Edge ose një shfletuesi tjetër të bazuar në Chromium si një shfletues i improvizuar mund t'ju shpëtojë nga një situatë e vështirë..
Mashtrimi është shumë i thjeshtë: Hapni shfletuesin tuaj të bazuar në Chromium (Chrome, Edge, Brave, etj.) dhe shkruani në shiritin e adresës skedari: /// sdcard /Android identifikon ruajtje kryesore e brendshme si sdcard, në një mënyrë shumë të ngjashme me mënyrën se si Windows përdor C: për diskun kryesor.
Kur e hapni atë adresë, shfletuesi zakonisht do të kërkojë leje për të lexuar memorien e brendshme. Pasi ta jepni këtë leje, do të shfaqet një indeks që tregon dosjet rrënjë të memories suaj të brendshme.Nga aty mund të hyni dhe të dilni nga dosjet njësoj sikur të ishit duke shfletuar një faqe interneti me lidhje.
Në secilën dosje do të shihni si nën-dosjet ashtu edhe skedarët. Skedarët shfaqen me emrin e tyre të plotë, duke përfshirë zgjatimin, madhësinë e tyre dhe datën e modifikimit të fundit.Gjithashtu renditen edhe këto: dosjet e fshehura, të cilat në Android zakonisht fillojnë me një pikë, si p.sh. .nomedia apo të tjera të ngjashme.
Edhe pse lista është shumë spartane, Shumica e shfletuesve modernë janë në gjendje të hapin drejtpërdrejt shumë lloje skedarësh duke i prekur ato.Imazhe, video, audio, dokumente teksti, etj. Nuk ka miniatura ose pamje paraprake, por thjesht klikimi mbi emrin e skedarit do të bëjë që shfletuesi të përpiqet ta shfaqë ose luajë atë.
Shndërroni Chrome dhe Edge në një eksplorues të vogël skedarësh në PC-në tuaj
Në kompjuterët desktop, si në Windows ashtu edhe në sisteme të tjera, Gjithashtu mund të përdorni Chrome, Edge dhe shfletues të tjerë të bazuar në Chromium për të lundruar në disqet tuaja lokale me file:///Parimi është i njëjtë si në Android, por rruga është e ndryshme.
Nëse përdorni Windows, disku kryesor është më së shpeshti C:. Në atë rast, shkruani në shiritin e adresës skedar:///C: dhe shtypni EnterShfletuesi do t'ju tregojë përmbajtjen e rrënjës së atij disku: dosje të tilla si Windows, Program Files, Usuarios, Etj
Nëse keni më shumë disqe ose ndarje, Mund ta zëvendësosh shkronjën në URL me atë përkatëse.. Për shembull, file:///D: për një album tjetër ose file:///E: për një kujtim USB se ishte montuar me atë shkronjë. Nga aty, klikoni mbi dosjet për të ecur përpara dhe përdorni butonin "prapa" të shfletuesit për t'u kthyer prapa.
Njësoj si në Android, Në secilën dosje do të shihni skedarë dhe nën-dosje me madhësinë, datën e modifikimit dhe zgjatimin e dukshëm.Nuk gjeneron miniatura ose ikona të bukura, por është i mjaftueshëm për të gjetur një skedar specifik ose për të hedhur një vështrim të shpejtë në një strukturë drejtorie.
Shumica e shfletuesve të Chromium Ato ju lejojnë të hapni drejtpërdrejt skedarë multimedialë dhe madje edhe disa formate dokumentesh. Thjesht duke klikuar mbi to. Imazhet, videot, audiot ose skedarët me tekst të thjeshtë shfaqen mjaft natyrshëm brenda skedës.
Hapni skedarët lokalë në Chrome dhe Firefox pa shkruar manualisht file:///
Përveç shtypjes së rrugëve me file:///Shfletuesit përfshijnë shkurtore të dizajnuara posaçërisht për të hapur shpejt skedarët lokalë. Në Chrome, për shembull, mund të përdorni shkurtoren e tastierës Ctrl + O (Control + O) kur dritarja e shfletuesit është aktive.
Duke shtypur atë shkurtore, Hapet kutia tipike e dialogut "Hap skedarin" e sistemit operativ.Thjesht gjeni skedarin që dëshironi, zgjidheni dhe konfirmoni. Chrome do ta ngarkojë atë në skedën aktuale ose në një të re, varësisht nga lloji i skedarit dhe preferencat tuaja.
Firefox ofron disa mundësi. Nga njëra anë, Mund të shkoni në menunë kryesore dhe të zgjidhni opsionin "Hap skedarin..."gjë që bën saktësisht të njëjtën gjë: shfaq dritaren e përzgjedhjes së skedarëve të sistemit. Si alternativë, mund të shkruani direkt një shteg si ky në shiritin e adresës: file:///// në mënyrë që shfletuesi të fillojë duke shfaqur përmbajtjen e diskut C: në Windows.
Me cilëndo nga këto metoda, Rezultati praktik është që shfletuesi bëhet një shikues lokal i skedarëve.Mund t'ju ndihmojë kur Windows Explorer Ngrihet kur keni probleme me menaxherin e zakonshëm të skedarëve ose thjesht kur doni të hapni një lloj dokumenti që shfletuesi e trajton veçanërisht mirë.
API-ja e Qasjes në Sistemin e Skedarëve: kalimi nga shikuesi në redaktues
Gjithçka që kemi parë deri më tani bazohet në përdorimin "manual" të file:/// dhe kutive të dialogut për hapjen e skedarëve, domethënë në gjëra që përdoruesi i bën manualisht. Por prej kohësh, shfletuesit e bazuar në Chromium kanë përfshirë API-në e Qasjes në Sistemin e Skedarëve., i cili u jep aplikacioneve web mundësinë për të punuar me skedarë lokalë në një mënyrë shumë më të përparuar.
Ky API lejon që një faqe interneti, pasi të kërkojë lejen tuaj, Lexoni dhe ruani ndryshimet direkt në skedarë dhe dosje në pajisjen tuajFalë kësaj, redaktorët seriozë të tekstit dhe IDE-të mund të krijohen direkt nga shfletuesi. programimi, redaktorë fotosh dhe videosh, menaxherë projektesh dhe shumë mjete të tjera që më parë kishin kuptim të zhvilloheshin vetëm si aplikacione për desktop.
Është e rëndësishme të mos e ngatërroni këtë API moderne me ato më të vjetra ose të vjetruara. Nuk është e njëjta gjë me ndërfaqen FileSystem as API-ja e Regjistrimeve të Skedarëve dhe Drejtorive dhe as specifikimi i vjetër "Skedar API: Drejtoritë dhe Sistemi", i cili propozoi mekanizma të tjerë për trajtimin e hierarkive të skedarëve dhe zonave të ruajtjes në sandbox.
API-ja aktuale e Qasjes në Sistemin e Skedarëve Është projektuar me kujdes të veçantë për sa i përket sigurisë, lejeve dhe përvojës së përdoruesit.Gjithmonë kërkohen veprime të qarta (siç është klikimi i një butoni) për të hapur përzgjedhësin e skedarit ose direktorisë, dhe përdoruesi është gjithmonë i qartë për shtigjet e sakta në të cilat po jep akses.
Në lidhje me përputhshmërinë, API funksionon në shumicën e shfletuesve të bazuar në Chromium në Windows, macOS, Linux, ChromeOS dhe Android.Një përjashtim i dukshëm është Brave, ku është ende e nevojshme të aktivizohet një flamur për ta përdorur atë. Shfletuesit e tjerë jo-Chromium mund të mos e zbatojnë atë ose mund ta bëjnë këtë vetëm pjesërisht.
Kontrolloni nëse shfletuesi mbështet API-në e Qasjes në Sistemin e Skedarëve
Si zhvillues, gjëja e parë që duhet të dini është nëse shfletuesi i përdoruesit e mbështet këtë API përpara se të përpiqeni ta përdorni. Mënyra më e thjeshtë është të kontrollohet nëse metodat përkatëse të përzgjedhjes së skedarëve ekzistojnë në objektin global.për shembull, duke kontrolluar nëse showOpenFilePicker është në dispozicion në window (o self në një punëtor).
Modeli tipik përbëhet nga diçka si kjo: "Nëse 'showOpenFilePicker' është vendosur në self, atëherë mund të përdor API-n; përndryshe, duhet të përdor një metodë alternative."Kjo lejon zbatimin e zgjidhjeve hibride ku, nëse ka mbështetje, shfrytëzohen avantazhet e API-t, dhe nëse nuk ka mbështetje, përdoren teknika tradicionale siç janë formularët e ngarkimit të skedarëve.
Është gjithashtu një ide e mirë Testoni në shfletuesit e synuar dhe në të ndryshëm sisteme operativeSepse edhe pse baza është Chromium, disa prodhues mund të aktivizojnë ose çaktivizojnë veçori specifike për arsye sigurie, politikash ose performance.
Shembulli i parë: hapja e një skedari lokal nga një aplikacion web
Një nga shembujt kanonikë për të kuptuar këtë API është ndërtimi i një një redaktues teksti me një skedar të vetëm që ju lejon të hapni, modifikoni dhe ruani një dokumentNuk ka nevojë të jetë spektakolare: për sa kohë që lexon dhe shkruan tekst të thjeshtë, ai ilustron tashmë se si funksionon.
Pika hyrëse këtu është metoda window.showOpenFilePicker(). Kjo metodë, e cila mund të thirret vetëm në një kontekst të sigurt (HTTPS) dhe në përgjigje të një gjesti të përdoruesitShfaq një dialog vendas për përdoruesin që të zgjedhë një skedar. Pasi të zgjidhet, kthen një varg dorezash, zakonisht me një të vetme FileSystemFileHandle.
Kjo dorezë ruan të gjithë informacionin dhe metodat e nevojshme për të punuar me skedarin e zgjedhur. Është një ide e mirë të ruani një referencë në dorezë, sepse atë do ta përdorni më vonë për të lexuar skedarin, për të ruajtur ndryshimet ose për të kryer ndonjë operacion tjetër.Për sa kohë që e ruani atë emërtim dhe përdoruesi nuk i ka revokuar lejet, aplikacioni juaj do të jetë në gjendje të bashkëveprojë me skedarin.
Pasi të keni FileSystemFileHandle, mund ta merrni objektin File thirrje e vërtetë handle.getFile()Ky objekt File Ai përmban të dhënat e skedarit si një blob, dhe ju mund të qaseni në përmbajtjen e tij duke përdorur metoda të tilla si text(), arrayBuffer(), stream() o slice() nëse keni nevojë për qasje të rastësishme.
Në praktikë, për një redaktues të thjeshtë teksti, Gjëja e zakonshme është të përdoret file.text() për të marrë përmbajtjen e plotë si një vargdhe vendoseni atë tekst në një <textarea> në mënyrë që përdoruesi të mund ta modifikojë atë. Është e rëndësishme të theksohet se objekti File Ai pushon së qeni i vlefshëm nëse skedari modifikohet në disk me anë të një mjeti tjetër, në të cilin rast këshillohet të thirret përsëri. getFile().
Ruaj ndryshimet: shkruaj në sistemin lokal të skedarëve
Për të ruajtur atë që përdoruesi ka modifikuar, API ofron dy shtigje tipike: një ruajtje "e thjeshtë" që mbishkruan skedarin origjinal dhe një "Ruaj si" që krijon një skedar të riDallimi thelbësor është nëse tashmë keni një adresë për skedarin destinacion apo nëse keni nevojë që përdoruesi të zgjedhë një shteg dhe emër të ri.
Kur doni të krijoni një skedar të ri ose të ruani një kopje me një emër tjetër, ju duhet të përdorni showSaveFilePicker()Kjo metodë hap përzgjedhësin e skedarëve në modalitetin e ruajtur, duke i lejuar përdoruesit të specifikojë emrin, dosjen dhe zgjatimin. Ju mund të ofroni opsione për të sugjeruar llojet e skedarëve, për shembull, duke treguar se është një dokument teksti dhe se zgjatimi i preferuar është . .txt.
Një detaj i rëndësishëm është ai Duhet të telefonosh showSaveFilePicker() direkt në përgjigje të gjestit të përdoruesit (për shembull, duke klikuar butonin "Ruaj") dhe mos e vononi ndërsa jeni duke bërë përpunime të rënda. Nëse kryeni të gjithë punën paraprake dhe më pas, me vonesë, përpiqeni të hapni dialogun, shfletuesi mund të shfaqë një gabim sigurie sepse nuk e konsideron më se po "përpunoni një gjest të përdoruesit".
Pasi të keni një FileSystemFileHandle duke treguar skedarin ku dëshironi ta ruani, Hapi tjetër është të krijoni një FileSystemWritableFileStream përdorim fileHandle.createWritable()Ky transmetim është ai që do të përdorni për të shkruar të dhënat. Nëse shfletuesi zbulon se ende nuk keni leje shkrimi, do të shfaqë një dialog lejesh; nëse përdoruesi e refuzon, thirrja do të krijojë një përjashtim.
Me rrjedhën në dorë, Ti thjesht telefono writable.write(contenido) me një varg, një Blob ose një BufferSourceMadje mund ta përcillni drejtpërdrejt trupin e një përgjigjeje HTTP në rrjedhë me response.body.pipeTo(writable)Kur të mbaroni së shkruari, e mbyllni transmetimin me writable.close(), që është momenti kur ndryshimet konsolidohen në disk.
Ndërsa transmetimi është i hapur, mund të përdorni edhe metoda të tilla si seek() o truncate() para zhvendosni treguesin e shkrimit në një pozicion specifik ose ndryshoni madhësinë e skedaritPor është e rëndësishme të mbani mend se ndryshimet nuk zbatohen përgjithmonë derisa transmetimi të mbyllet.
Sugjeroji përdoruesit emrin e skedarit dhe dosjen kryesore
API-ja kujdeset gjithashtu për përvojën e përdoruesit në kutitë e dialogut të sistemit. Për shembull, Mund të specifikoni një emër skedari të sugjeruar kur e telefononi showSaveFilePicker()Kjo i lejon përdoruesit të shohë diçka më përshkruese, siç është "Dokument i Ri.txt", në vend të një "Pa Titull" të përgjithshëm.
Në mënyrë të ngjashme, Është e mundur të sugjerohet një dosje fillestare ku fillon zgjedhësi i skedarëve.Kjo bëhet duke kaluar një pronë startIn kur telefonon showSaveFilePicker(), showOpenFilePicker() o showDirectoryPicker()Vlerat mund të jenë vargje si desktop, documents, downloads, music, pictures o videos, të cilat korrespondojnë me vendndodhjet standarde të sistemit.
Gjithashtu, ju keni mundësinë e përdoret si një vlerë e startIn një menaxher skedarësh ose drejtorish që e keni tashmëNë atë rast, kutia e dialogut hapet direkt në dosjen ku ndodhet ajo dorezë, gjë që është shumë e përshtatshme për të rifilluar kontekstin e punës së seancës së fundit.
Nëse aplikacioni juaj trajton lloje të ndryshme skedarësh (për shembull, dokumente teksti dhe imazhe të integruara), Mund të përcaktoni ID të ndryshme për secilin lloj kutie dialoguNë këtë mënyrë, shfletuesi do të kujtojë dosjen e fundit të përdorur në mënyrë të pavarur për secilin ID, dhe nuk do të ngatërroni shtigjet e dokumenteve me shtigjet e imazheve.
Mbani mend skedarët dhe dosjet e fundit me IndexedDB
Një nga pikat e forta të File System Access është se trajtuesit e tij janë të serializueshëm. Kjo do të thotë që ju mund të ruani FileSystemFileHandle y FileSystemDirectoryHandle në IndexedDB dhe t'i rimarrësh ato në seancat pasuese, duke respektuar gjithmonë politikën e lejeve.
Falë kësaj, aplikacionet web mund të ofrojnë funksione tipike të desktopit, të tilla si listat e skedarëve të fundit, rihapja e projektit të fundit ose rikuperimi i dosjes së mëparshme të punësThjesht duhet t’i ruani dorezat në bazën e të dhënave të shfletuesit dhe t’i lexoni ato kur të fillojë aplikacioni.
Kur rikuperoni një dorezë të ruajtur, Mos supozo se lejet do të mbeten në fuqi.Shfletuesi mund të vendosë që autorizimi duhet të kërkohet përsëri, për shembull, sepse ka kaluar kohë ose skeda e fundit nga ai burim është mbyllur. Prandaj, rekomandohet që kodi juaj ta kontrollojë këtë.
Për këtë kontroll, API-ja përfshin metodat queryPermission() y requestPermission() si në trajtuesit e skedarëve ashtu edhe në direktoritëSë pari, pyet se në çfarë statusi ndodhet leja dhe, nëse nuk është "dhënë", mund ta kërkosh përsëri nga përdoruesi, duke treguar në opsione nëse ke nevojë vetëm për lexim apo për lexim dhe shkrim.
Një praktikë e mirë është kombinoni të dy hapat në një funksion ndihme Duke pasur parasysh një dorezë dhe një modalitet (vetëm lexim ose lexim/shkrim), duhet të kontrollojë nëse leja është dhënë tashmë dhe, nëse jo, të shfaqë njoftimin përkatës. Kjo zvogëlon numrin e dialogëve dhe e bën përvojën më të lehtë.
Hapni dhe shfletoni të gjitha drejtoritë nga shfletuesi
Përveç skedarëve individualë, API lejon punën me dosje të tëra. me showDirectoryPicker() përdoruesi mund të zgjedhë një drejtori të plotëdhe aplikacioni merr një FileSystemDirectoryHandle që u jep akses të gjithë elementëve të saj.
Si parazgjedhje do të keni leje leximi për skedarët në atë drejtori, megjithëse nëse duhet të shkruani edhe në to Mund të kërkoni akses leximi dhe shkrimi duke kaluar { mode: 'readwrite' } kur telefonoj showDirectoryPicker()Që nga ai moment, aplikacioni juaj mund të listojë dhe manipulojë përmbajtjen sipas lejes së dhënë.
Për të lundruar nëpër dosje, Mund të përsërisni në mënyrë asinkrone dirHandle.values()i cili kthen, një nga një, elementët që përmban: skedarët dhe nën-direktoritë. Çdo hyrje ka një veti kind që ju tregon nëse është një "file" ose "directory".
Nëse keni nevojë të qaseni në informacion rreth secilit skedar, siç është madhësia e tij, mund të telefononi entry.getFile(). Në këto raste, rekomandohet që leximet të kryhen paralelisht duke përdorur Promise.all() ose teknika të ngjashme, në vend që të shkojnë një nga një në një mënyrë strikte sekuenciale, gjë që mund të jetë më e ngadaltë.
Mund ta bësh këtë edhe nga një drejtori krijoni dosje ose skedarë të rinj me getDirectoryHandle() y getFileHandle()Mund të specifikoni në opsione nëse dëshironi që ato të krijohen nëse nuk ekzistojnë tashmë. Për shembull, mund të konfiguroni një strukturë projekti si "Projekti Im / Kodi / Shënimet.txt" direkt nga aplikacioni web.
Menaxho skedarët: fshi, riemërto dhe zhvendos
API nuk kufizohet vetëm në lexim dhe shkrim. Gjithashtu ju lejon të fshini skedarët dhe dosjet nga një drejtori duke përdorur removeEntry() mbi një FileSystemDirectoryHandleNëse është një dosje, mund ta bëni fshirjen rekursive, në mënyrë që të përfshijë të gjitha nën-dosjet dhe skedarët e saj.
Nëse, në vend që të kaloni nëpër direktori, dëshironi të veproni drejtpërdrejt në një dorezë skedari ose dosjeje, Disa shfletues ofrojnë këtë metodë remove() en FileSystemFileHandle y FileSystemDirectoryHandleNë këtë mënyrë ju e hiqni atë element pa pasur nevojë t'i referoheni emrit të tij brenda direktorisë mëmë.
Për operacione organizative siç është riemërtimi ose zhvendosja e artikujve në një dosje tjetër, Ekziston një metodë move() në ndërfaqe FileSystemHandleMund t'i kalosh direkt një emër të ri, një drejtori destinacioni ose një drejtori plus emrin e ri për ta zhvendosur dhe riemëruar në të njëjtën kohë.
Megjithatë, ka nuanca në përputhshmëri: mbështetjen e move() Është më i pjekur për skedarët brenda sistemit privat të skedarëve burimorë (OPFS)dhe mund të jetë ende pas flamujve ose të mos jetë i zbatuar për të gjitha skenarët ose për drejtoritë në shfletues të caktuar.
Zvarrit dhe lësho skedarët dhe dosjet në internet
API-ja e Qasjes në Sistemin e Skedarëve integrohet shumë mirë me sistemin tërheq-dhe-lësho të HTML-së. Kur përdoruesi tërheq skedarë ose dosje nga sistemi operativ në një faqe internetiShfletuesi krijon elementë DataTransferItem bashkëpunëtorët.
Përmes metodës DataTransferItem.getAsFileSystemHandle(), mund të marrësh një FileSystemFileHandle nëse elementi është një skedar apo një FileSystemDirectoryHandle nëse është një drejtoriKështu, një aplikacion mund t'i lejojë përdoruesit të zvarritë dhe lëshojë një dosje të tërë me foto dhe të punojë drejtpërdrejt me përmbajtjen e saj.
Duhet të keni parasysh se, në kontekstin e funksionit "drag and drop", DataTransferItem.kind Gjithmonë do të jetë "skedar" si për skedarët ashtu edhe për dosjetDo të kuptoni dallimin midis skedarit dhe direktorisë duke konsultuar pronën kind del FileSystemHandle që të kthen mbrapsht getAsFileSystemHandle()e cila do të bëjë dallimin midis "file" y "directory".
Sistemi i Skedarëve me Burim Privat (OPFS) dhe akses i optimizuar
Përveç aksesit në skedarët dhe dosjet e përdoruesit, shfletuesit Chromium ofrojnë një sistemi i skedarëve privatë të origjinës (OPFS)Ky është një hapësirë ruajtjeje e dedikuar për secilën faqe interneti, e cila nuk është e arritshme drejtpërdrejt nga përdoruesi nga sistemi operativ.
Në praktikë, kjo do të thotë se Edhe pse shfletuesi i ruan këto të dhëna në disk, përdoruesi nuk do t'i gjejë ato si skedarë "normalë" në asnjë dosje të vjetër.Kjo mund të jetë një bazë të dhënash, skedarë të paketuar ose çdo strukturë e brendshme që shfletuesi e konsideron të përshtatshme.
Nga API mund të hyni në rrënjën e këtij sistemi privat duke përdorur navigator.storage.getDirectory(), e cila kthen një FileSystemDirectoryHandle. Nga aty mund të krijoni skedarë dhe drejtori, t'i lexoni, t'u shkruani, t'i riemërtoni ose t'i fshini njësoj sikur të ishin elementë të sistemit lokal të skedarëve.Por duke ditur se ato janë të izoluara dhe të dedikuara ekskluzivisht për aplikacionin tuaj në internet.
Për nevoja më të avancuara të performancës, Chromium përfshin një lloj të veçantë skedari me akses sinkron të optimizuar. përmes fileHandle.createSyncAccessHandle() (e disponueshme në workers), mund të merrni një dorezë që lejon leximin dhe shkrimin sinkron dhe ekskluziv, gjë që është e dobishme për raste përdorimi shumë intensive ose të ndjeshme ndaj latencës.
Marrja e dorezës është ende asinkrone, por sapo ta keni atë, Operacionet e leximit dhe shkrimit kryhen si thirrje të drejtpërdrejta, duke manipuluar buffer-at e bajteve.Kjo i afrohet shumë performancës së një aplikacioni vendas, por pa dalë nga mjedisi i uebit dhe pa ruajtur izolimin nga sistemi burimor privat.
Polifillet dhe alternativat kur nuk ka mbështetje native
Edhe pse API-ja e Qasjes në Sistemin e Skedarëve ofron shumë mundësi, Jo të gjithë shfletuesit e mbështesin endeNuk është e mundur të krijohet një polifill i plotë që replikon të gjitha aftësitë e tij, kryesisht sepse nuk ka asnjë mënyrë për të simuluar në mënyrë të besueshme aksesin në sistemin nativ të skedarëve pa bashkëpunimin e vetë shfletuesit.
Megjithatë, disa pjesë mund të përafrohen. Për të imituar showOpenFilePicker() një e thjeshtë <input type="file">, i cili shfaq kutinë e përzgjedhjes së skedarëve dhe i lejon përdoruesit të zgjedhë një ose më shumë skedarë.
Diçka e ngjashme ndodh me kursimin. Për të imituar showSaveFilePicker() një lidhje përdoret shpesh <a download="nombre"> Klikimi i tij fillon shkarkimin e një Blob të gjeneruar nga JavaScript. Kjo ju lejon të "ruani" të dhënat e gjeneruara nga faqja e internetit, megjithëse nuk ofron mundësinë për të mbishkruar skedarët ekzistues.
Lidhur me përzgjedhjen e të gjithë drejtorive, atributi jo-standard është përdorur tradicionalisht webkitdirectory en <input type="file">që ju lejon të zgjidhni një dosje dhe të merrni një listë të skedarëve që përmban. Nuk është një zgjidhje universale dhe as aq e fuqishme sa showDirectoryPicker()por mbulon disa raste.
Për të unifikuar këto qasje, Ka librari si p.sh. qasje-në-fs-të-shfletuesit Ata përpiqen të përdorin API-në moderne sa herë që është e disponueshme, dhe nëse jo, ata automatikisht kthehen te këto alternativa më të mira.Në këtë mënyrë, zhvilluesi shkruan kod relativisht uniform dhe biblioteka kujdeset për përshtatjen me mjedisin.
Siguria, lejet dhe kontrolli i përdoruesit
E gjithë kjo fuqi vjen me përgjegjësi, dhe ekipet e shfletuesve janë shumë të vetëdijshme për këtë. Dizajni i API-t të Qasjes në Sistemin e Skedarëve sillet rreth dy parimeve: kontrollit të përdoruesit dhe transparencës.Nuk ka asnjë mënyrë që një faqe interneti të lexojë fshehurazi gjysmën e një hard disku.
Kur përdoruesi hap një skedar duke përdorur kutitë e përzgjedhjes (ose për të lexuar ose për të ruajtur një të ri), Është ai gjest që jep leje leximi ose shkrimi në skedarin ose dosjen specifike.Nëse përdoruesi ndryshon mendje dhe anulon dialogun, faqja e internetit nuk merr asgjë dhe për këtë arsye nuk fiton asnjë akses.
Për të ruajtur një skedar të ri, klikoni në kutinë "Ruaj" Jo vetëm që ju lejon të zgjidhni një emër dhe shteg, por shërben edhe si një dhënie e lejes së shkrimit në atë skedar të sapokrijuar.Logjika është e njëjtë me atë të përdorur për vite me radhë në elementë të tillë si <input type="file">por i zgjeruar me më shumë aftësi.
Kur një aplikacion web dëshiron të modifikojë një skedar që ekziston tashmë, Nuk mund ta bëjë thjesht këtë; shfletuesi mund të shfaqë një njoftim specifik që kërkon leje për të shkruar në të.Ky dialog mund të hapet vetëm si përgjigje ndaj një veprimi të përdoruesit, siç është shtypja e butonit "Ruaj ndryshimet".
Nëse përdoruesi vendos të mos e japë atë leje shkrimi, Uebsajti duhet të ofrojë ndonjë alternativë: shkarkimin e një kopjeje, ruajtjen në cloud, punën në OPFS ose një mekanizëm tjetër të ngjashëm.Ideja është që përdoruesi gjithmonë ka fjalën e fundit për atë që preket në sistemin e tij lokal.
Në aspektin e transparencës, Shfletuesit shfaqin një ikonë në shiritin e adresës kur një faqe interneti ka qasje në skedarët lokalëNëse përdoruesi klikon mbi atë ikonë, ai do të shohë një listë të skedarëve ose dosjeve në të cilat faqja ka qasje në atë moment dhe mund t'i revokojë lejet sa herë që dëshiron.
Lejet nuk janë të përhershme. Në përgjithësi, një faqe ruan aftësinë për të vazhduar ruajtjen e skedarëve vetëm për sa kohë që të paktën një skedë nga ai burim është e hapur.Pasi të gjitha të jenë mbyllur, shfletuesi mund të konsiderojë se seanca ka mbaruar dhe, në përdorimin tjetër, do të jetë e nevojshme të kërkojë përsëri leje për ato skedarë ose drejtori.
Duke kombinuar skemën file:/// për të hapur burime specifike, shkurtore të tastierës për të ngarkuar skedarë lokalë dhe API-në e Qasjes në Sistemin e Skedarëve për integrime të thella Kjo e bën shfletuesin një mjet shumë më të gjithanshëm si për përdoruesit ashtu edhe për zhvilluesit.duke ju lejuar të shikoni shpejt një video të ruajtur në disk ose të modifikoni projekte të tëra pa dalë nga mjedisi i uebit.
Shkrimtar i apasionuar pas botës së bajteve dhe teknologjisë në përgjithësi. Më pëlqen të ndaj njohuritë e mia përmes shkrimit, dhe kjo është ajo që do të bëj në këtë blog, duke ju treguar të gjitha gjërat më interesante në lidhje me pajisjet, softuerin, harduerin, tendencat teknologjike dhe më shumë. Qëllimi im është t'ju ndihmoj të lundroni në botën dixhitale në një mënyrë të thjeshtë dhe argëtuese.