[英]Read local/static file in Blazor Wasm
我的項目是在Blazor WASM中創建的(我不想使用 Blazor 服務器)
我想從 wwwroot 讀取 XSD 個文件:
在我的 XsdService.cs 中 - c# class 我正在嘗試:
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 中? 即使應用程序處於離線狀態也能閱讀它們嗎?
創建對文件的 Http GET 調用。 將 Blazor 視為 SPA 應用程序。 運行您的應用程序所需的所有文件都已下載到用戶瀏覽器中。 圖像等其他所有內容均應要求獲取。 就像瀏覽器請求圖像一樣。
@inject HttpClient _client
@code {
async Task GetXDSFile()
{
var byteOfTheFile = await _client.GetByteArrayAsync("plcda/extPL_r2.xsd");
}
}
此示例只是將文件作為字節數組獲取。 其他版本的 Get 可能更適合您,例如GetStreamAsync
。
在 .NET Core 6 中,您可以將提供程序映射添加到客戶端項目的 program.cs 中,以提供 static 文件。
例如,我需要加載一個 3d model(.obj、.mtl 文件):
Blazor WASM 客戶端專用項目:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.StaticFiles;
var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".obj", "application/obj");
provider.Mappings.Add(".mtl", "application/mtl");
builder.Services.Configure<StaticFileOptions>(options =>
{
options.ContentTypeProvider = provider;
});
await builder.Build().RunAsync();
如果你有一個 asp.net 核心托管項目,你可以簡單地將它放在服務器項目的 program.cs 文件中,而不需要添加 nuget package 引用。
Blazor WASM Asp.net 核心托管項目:
using Microsoft.AspNetCore.StaticFiles;
var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".babylon", "application/javascript");
provider.Mappings.Add(".obj", "application/obj");
provider.Mappings.Add(".mtl", "application/mtl");
builder.Services.Configure<StaticFileOptions>(options =>
{
options.ContentTypeProvider = provider;
});
var app = builder.Build();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.