簡體   English   中英

讀取 Blazor Wasm 中的本地/靜態文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM