繁体   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