Aktuelle Zeit: 15.08.2020 19:28

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Native File System API
BeitragVerfasst: 24.10.2019 16:01 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
ollɐH,

seit Version 78 bietet Google Chrome ein Native File System API an, mit dem es möglich ist, Dateien auf dem Gerät des Benutzers zu lesen und zu speichern.

Siehe auch: https://web.dev/native-file-system/

Hier eine einfache Demo in Form eines simplen Text-Editors. Die Besonderheit ist, dass man Dateien laden, verändern und speichern kann:
Code:
EnableExplicit

Define myToken.s = "[YourToken]"

Define MetaTag.s = ~"<meta http-equiv=\"origin-trial\" content=\"" + myToken + ~"\">"

! $("head").append(v_metatag);

Global FileHandle

Enumeration
  #Window
  #LoadButton
  #SaveButton
  #SaveAsButton
  #Editor
EndEnumeration

Procedure WriteFile(e, t.s)
  ! (async() => {
  !   // Create a writer (request permission if necessary).
  !   const i = await v_e.createWriter();
  !   // Make sure we start with an empty file
  !   await i.truncate(0),
  !   // Write the full length of the contents
  !   await i.write(0, v_t),
  !   // Close the file and write the contents to disk
  !   await i.close()
  ! })(); 
EndProcedure

Procedure LoadButtonEvent()
 
  Protected FileContent.s
 
  ! (async() => {
 
  !   const opts = {
  !     type: 'openFile',
  !     accepts: [{
  !       description: 'Text file',
  !       extensions: ['txt'],
  !       mimeTypes: ['text/plain'],
  !     }],
  !   }; 
 
  !   v_filehandle  = await window.chooseFileSystemEntries(opts);
  !   var file      = await v_filehandle.getFile();
  !   v_filecontent = await file.text();
 
  SetGadgetText(#Editor, FileContent)
  SetActiveGadget(#Editor)
 
  ! })();
 
EndProcedure

Procedure SaveAsButtonEvent()
 
  Protected FileContent.s = GetGadgetText(#Editor)
 
  ! (async() => {
  !   const opts = {
  !     type: 'saveFile',
  !     accepts: [{
  !       description: 'Text file',
  !       extensions: ['txt'],
  !       mimeTypes: ['text/plain'],
  !     }],
  !   };
 
  !   v_filehandle = await window.chooseFileSystemEntries(opts);
 
  !   if (typeof v_filehandle != "undefined") {
  WriteFile(FileHandle, FileContent)
  !   }
 
  ! })(); 
 
EndProcedure

Procedure SaveButtonEvent()
 
  ! if (typeof v_filehandle === "undefined") {
  SaveAsButtonEvent()
  ProcedureReturn
  ! }
 
  Protected FileContent.s = GetGadgetText(#Editor)
 
  ! (async() => {
  WriteFile(FileHandle, FileContent)
  ! })(); 
 
EndProcedure

Procedure AddClickEventListener(Gadget, Callback)
  Protected GID = GadgetID(Gadget)
  ! v_gid.div.addEventListener('click', async (e) => { v_callback(e) });
EndProcedure

OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 800, 600, "Native FileSystem - Demo", #PB_Window_ScreenCentered)

ButtonGadget(#LoadButton,    10, 10, 80, 30, "Load")
ButtonGadget(#SaveButton,   100, 10, 80, 30, "Save")
ButtonGadget(#SaveAsButton, 190, 10, 80, 30, "Save as...")

EditorGadget(#Editor, 10, 50, WindowWidth(#Window) - 20, WindowHeight(#Window) - 60)

AddClickEventListener(#LoadButton,   @LoadButtonEvent())
AddClickEventListener(#SaveButton,   @SaveButtonEvent())
AddClickEventListener(#SaveAsButton, @SaveAsButtonEvent())


Grüße ... Peter

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Native File System API
BeitragVerfasst: 25.10.2019 09:07 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:53
Danke für den Tipp. Hab es mit Chrome Version 78.0.3904.70 getestet,
bekomme aber den Fehler:

Uncaught (in promise) TypeError: spider_GetGadgetText(...) is not a function
bei (async() => {

Code:
v_filecontent=spider_GetGadgetText(4)
 (async() => {
f_writefile(v_filehandle,v_filecontent);
 })();
return 0;
}


_________________
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Native File System API
BeitragVerfasst: 25.10.2019 09:56 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
dige hat geschrieben:
bekomme aber den Fehler:

das ist seltsam...

Um erst einmal andere Fehler auszuschließen: Die Schritte, die ich hier beschrieben habe, hast Du durchgeführt?

Grüße ... Peter

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Native File System API
BeitragVerfasst: 25.10.2019 13:51 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:53
:oops:

_________________
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Native File System API
BeitragVerfasst: 25.10.2019 15:42 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9
dige hat geschrieben:
:oops:

ich werte das mal als ein "hat geklappt".

_________________
Schrödingers Smiley :):


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye