Laden...

Blazor Clientside zugriff auf lokales Verzeichnis über URL

Erstellt von ByteDevil vor 2 Jahren Letzter Beitrag vor 2 Jahren 433 Views
ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 2 Jahren
Blazor Clientside zugriff auf lokales Verzeichnis über URL

Hi,

ich baue gerade eine Blazor-Anwendung die Clientside funktionieren soll (Web assembly). Darin kann man eine Zip-Datei angeben die dann ausgepackt und deren Inhalt ins Root-Verzeichnis gepackt wird:


MemoryStream ms ...
using (var zipArchive = new ZipArchive(ms))
    zipArchive.ExtractToDirectory(Directory.GetCurrentDirectory());

Führe ich folgendes aus:


var files = Directory.GetFileSystemEntries(Directory.GetCurrentDirectory());

... sehe ich das die Dateien dort liegen. Nun muss ich zwingend and diese Dateien über die URL kommen können. Das verlangt leider eine JS-Komponente die von einem Drittanbieter ist. Wie mache ich eine Route die diese Dateien exponiert? Die Dateien heißen immer gleich und es sind immer 3 Stück.

16.842 Beiträge seit 2008
vor 2 Jahren

Das wird so von Haus aus nich möglich sein, was aber nichts mit Blazor zutun hat. Die Dateien selbst sind im Local Storage, d.h. gar nich über ne URI erreichnbar.
Eine URI erzeugt jedoch auch einen neuen Request und damit einen neuen Kontext im Browser; d.h. same context behavior is hier auch nicht.

Ich würde jetz pauschal aufgrund vom Ausschlussverfahren sagen, dass Deine externe Kompotente hier inkompatibel mit WebAssembly ist.
Aber is jetz nichts so ungewöhnliches; viele JS Bibliotheken sind (noch) inkompatibel mit WebAssembly.

ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 2 Jahren

Vielen Dank Abt,

das ist ein echter Jammer 🙁 Könnte man nicht versuchen 3 echte Routen manuell zu basteln, die bei einem GET dann einen Status 200 und als Content diese Dateien ausspucken? Leider fehlen mir hier etwas die Kenntnisse und auch Google hat mich nicht sehr weit gebracht. Unter ASP würde ich jetzt halt einfach 3 Controller hinzufügen...

16.842 Beiträge seit 2008
vor 2 Jahren

Äh, nein. So funktioniert WebAssembly im Client leider nicht.
Aber evtl. nimmt Deine JS Lib einen eine data:-Uri an, dann kannst Du das Bild als base64 übergeben.