Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

Dateiupload mit FHEMWEB Bordmitteln

Begonnen von Harry47, 11 November 2024, 16:42:04

Vorheriges Thema - Nächstes Thema

Harry47

Hier findet Ihr eine Möglichkeit um im Web Frontend eine beliebige Datei auf den FHEM Server hochzuladen.
Die Datei wird entsprechend den im Modul 01_FHEMWEB.pm hinterlegten Regeln in folgende Unterverzeichnisse hochgeladen.
DateiendungZielverzeichnis
js|css|_defs.svg=> $FW_dir/pgm2 (Standard: /fhem/www/pgm2)
png|svg=> $FW_dir/images (Standard: /fhem/www/images/fhemSVG) HINWEIS: FHEMWEB hat da ein Problem - Datei wird hochgelden, aber keine Erfolgsmeldung
gplot=> $FW_dir/gplot (Standard: /fhem/www/gplot)
log=> Logdir() (Standard: /fhem/log)
Alle Anderen=> $FW_ME/FHEM (Standard: /fhem/FHEM)

Zunächst erstellt Ihr folgenden WebLink:
defmod UploadFile weblink htmlCode { '<table><tr><td><input type="button" id="inbutton" style="background-color:white;;border-color:black;;color:black;;cursor:pointer" onclick="document.getElementById(bname).click();;" value="Datei hochladen...    "><input type="file" id="fileInput" accept=".*" style="display: none;;" /></td><td><script> document.getElementById("fileInput").addEventListener("change",function(event) {event.preventDefault();; const fileInput = document.getElementById("fileInput");; const file = fileInput.files[0];; if (file) {document.getElementById("inbutton").value = file.name;; const reader = new FileReader();; reader.onload = function(event)  { const fileContents = event.target.result;; document.getElementById("data").value = fileContents;;  document.getElementById("fwcsrf").value = document.body.getAttribute("fwcsrf");; var re_filename = file.name ;; document.getElementById("re_save").value = "Save " + re_filename;; document.getElementById("saveName").value = re_filename;; document.getElementById("re_cmd").value = "style save " + re_filename;; document.getElementById("re_save").click();; };;  reader.readAsText(file);; } else { alert("No file selected");;}});; var bname = "fileInput";; </script></td></tr><input type="hidden" name="fwcsrf" id="fwcsrf"/><input type="submit" name="save" id = "re_save" value="Save Dummyfilename.log" style="display: none"/> <input type="hidden" name="saveAs" value="Save as" />  <input type="hidden" name="saveName" id="saveName" class="saveName" size="30" value="Dummyfilename.log" autocorrect="off" autocapitalize="off"/>  <input type="hidden" name="cmd" id="re_cmd" value="style save Dummyfilename.log"/><input type="hidden" name = "data" id = "data"></input> </td></tr></table>' }
attr UploadFile room Your_Room
WICHTIG: "Your_Room" ersetzen durch eigenen "Room" Namen. Der WebLink funktioniert nur, wenn er aus diesem "Room" benutzt wird !
WICHTIG: Die mögliche Dateigröße wird auch von den entsprechenden Werten in der Config Datei eines eventuell vorgeschalteten Servers z.B. "nginx" , "apache" etc. begrenzt.
Nach einem erfolgreichen Hochladen wird eine entsprechende Meldung auf der "Edit files" Übersichtsseite angezeigt. (Siehe Anhang für die Datei "Beispiel.csv")
Danach kann die hochgelade Datei weiter bearbeitet bzw. in ein anderes Verzeichnis kopiert/verschoben werden. siehe z.B. "FW_cmd"
https://wiki.fhem.de/wiki/DevelopmentFHEMWEB-API
INDIVIDUELL: Der Text "Datei hochladen...    " in der Definition kann natürlich entsprechend angepasst werden
INDIVIDUELL: Durch Ersetzen des Textes in der Definition => accept=".*" <= in z.B => accept=".csv"<=  kann bei unterstützten Betriebssystemen (z.B. Windows 10) die Dateiauswahl eingegrenzt werden auf die Dateien mit der entsprechenden Endung