Aus
Sicherheitsgründen kann Browsercode
nicht in deinem Dateisystem herumschreiben.
Er kann aber einen Web-
Server bitten,
Daten für ihn auf den Server zu schreiben.
So ein Webserver läuft normalerweise nicht
auf einem normalen PC — außer eben ...
Wenn du das Wissen und Geld dafür hast,
rate ich dir, einen
Offline-PC einzurichten,
bei dem du sämtliche Internetfunktionalität
deaktivierst, sobald du alle nötige Software,
etwa Webbrowser und vor allem
XAMPP,
fertig installiert hast.
XAMPP ist eine Plattform zum Entwickeln
von
Servercode für Internetanwendungen.
Es
simuliert einen Webserver auf deinem
localhost und wird am sichersten
auf einem Offline-PC betrieben.
XAMPP steht für:
X = Windows oder Linux (WAMPP/LAMPP)
A = Apache Webserver
M = MySQL oder MariaDB Datenbank-Server
P = PHP Server-Programmiersprache
P = Perl Server-Programmiersprache
Es
korrekt einzurichten kann eine
Herausforderung sein, es lohnt sich aber.
Nun kannst du endlich richtig
Dateien
speichern und laden, sobald du ein
entsprechendes
BSB-Protokoll
implementiert hast. Etwa folgendes:
1. Der
Eas-4B-Browsercode:
save'to -- (engl. "speichern unter")
fn -- file name (engl. "Dateiname")
d -- data (engl. "Daten")
:
send ("save" fn MAP:d)
TO'SERVER:"BSB.php" send 1
/
delete'file -- (engl. "lösche Datei")
fn -- file name
:
save'to:fn
/
load'from -- (engl. "laden von")
fn -- file name
:
TO'SERVER:"BSB.php" ("load" fn) 1
/
! SERVER'REPLY
r FROM'JSON:SERVER'REPLY
? r[0]="loaded" -- (engl. "geladen")
fn r[1] -- file name
d FROM'MAP:r[2] -- data
--+ geladene Daten verwenden
/
/Die Speichern-Anfrage wird als
JSON
gesendet, das ist der letzte Parameter "1",
die Daten aber werden geMAPet, denn
MAP ist ein kompakteres Format.
Der Server erwartet, dass Anfragen mit
einem
Kommando-Feld beginnen, etwa
"save", dem in den meisten Fällen ein oder
mehrere
Nutzlast-Felder folgen.
Für "save" sind das der Dateiname
und die zu speichernden Daten.
BSB ist
asynchron, daher erfolt das
Laden einer Datei in zwei Schritten:
1. Datei
anfragen via load'from
2. Datei
empfangen im !SERVER'REPLY
Die Serverantworten verwenden
dieselbe
Struktur wie BSB-Anfragen:
Kommando + Nutzlasten.
2. Der
PHP-Servercode:
(Speichere ihn als BSB.php.)
<?php
r(file_get_contents("php://input"));
function r($r){
$r=json_decode($r);
if(!$r)exit;
switch("$r[0]-".(count($r)-1)){
case"save-2":
$f="savefiles/$r[1]";
$p=dirname($f);
if(!is_file($p))mkdir($p,0777,1);
file_put_contents($f,$r[2]);
break;
case"load-1":
$f="savefiles/$r[1]";
$d=file_get_contents($f);
if($d===false)$d="";
$r=["loaded",$r[1],$d];
echo json_encode($r);
break;
}
}
?>
Dieser ganze PHP-Code
könnte übrigens durch folgenden
Eas-4S-Code ersetzt werden
(Eas 4S ist noch in der Entwicklung):
!
r FROM'BROWSER
? r[0];"-";r? = "save-2"
SAVE:r[1] r[2]
\ "load-1"
SAY:("loaded" r[1] LOAD:r[1])
/
/