在Blazor Wasm中读取本地/静态文件

时间:2020-08-03 21:06:49

标签: c# progressive-web-apps blazor blazor-client-side blazor-webassembly

我的项目是在 Blazor WASM 中创建的(我不想使用Blazor服务器)

我想从wwwroot读取XSD文件:

enter image description here

在我尝试的XsdService.cs-c#类内部:

string pathToXsd = Path.Combine("plcda","extPL_r2.xsd");
string transformataHTML = System.IO.File.ReadAllText(pathToXsd);

但是,我总是会出错:

Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Could not find a part of the path "/plcda/extPL_r2.xsd".
System.IO.DirectoryNotFoundException: Could not find a part of the path "/plcda/extPL_r2.xsd".

那么,是否有机会将自定义/静态/本地文件包含到Blazor WASM中?甚至在应用程序离线时也能阅读它们?

1 个答案:

答案 0 :(得分:2)

创建对文件的Http GET调用。将Blazor wasm视为SPA应用程序。 运行所需的所有文件都下载到用户浏览器中。像图像一样的其他所有内容均应请求获取。就像图像是浏览器所要求的。

@inject HttpClient _client

@code {
    async Task GetXDSFile()
    {
        var byteOfTheFile = await _client.GetByteArrayAsync("plcda/extPL_r2.xsd");
    }
}

此示例仅以字节数组形式获取文件。其他版本的Get可能更适合您GetStreamAsync