【问题标题】:How to read files from a directory in Blazor WebAssembly [duplicate]如何从 Blazor WebAssembly 中的目录中读取文件 [重复]
【发布时间】:2020-11-14 08:18:35
【问题描述】:

我目前正在开发一个 .NET Standard 2.1 Blazor WebAssembly 应用程序。我尝试从我的 wwwroot 目录中读取文件路径

Blazor WebAssembly 应用程序不是 Asp.NET Core 托管的。

我尝试从 Program.cs 中的 Main 方法中读取所有以 .js 结尾的文件路径,如下所示:

var filePaths = ReadWwwRootJSFilePaths();
private static string[] ReadWwwRootJSFilePaths()
        {
            Console.WriteLine("CurrentDirectory: " + Directory.GetCurrentDirectory());
            var dir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "js");
            Console.WriteLine("dir: " + dir);
            var files = Directory.GetFiles(dir);
            foreach (string file in files)
            {
                Console.WriteLine("file: " + file);
            }
            return files;
        }

当我运行它时,我只会在浏览器中收到一条错误消息:System.IO.DirectoryNotFoundException

你知道如何解决这个问题吗?你知道如何在 Blazor WASm(不是 ASP.NET Core 托管)应用程序中从 wwwroot 目录读取文件路径吗?

也许我还不太了解 Blazor WebAssembly(不是 ASP.NET Core 托管)的概念。是否真的可以使用 C# .NET Core 功能?

【问题讨论】:

  • 这能回答你的问题吗? Reading server-side files using Blazor
  • 浏览器无法从计算机的驱动器中读取。如果您使用 Blazor + Electron 构建您的应用程序,您可能能够实现您的目标,或者 Blazor Mobile Bindings 可能是更好的选择?

标签: c# file asp.net-core blazor webassembly


【解决方案1】:

是的,您可以简单地对 wwwroot 中的文件执行 HTTP 调用。

要查看此操作的实际效果,请创建一个 WebAssembly 独立项目,其中 FetchData 调用位于 wwwroot 中的 json 文件。这是一些代码:

protected override async Task OnInitializedAsync()
    {
        forecasts = await Http.GetJsonAsync<WeatherForecast[]>("sample-data/weather.json");
    }

【讨论】:

  • 谢谢,我最终将文件名写入一个单独的 .json 文件并使用 AJAX 读取它们。
  • 其实应该是await Http.GetFromJsonAsync
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 2013-02-03
  • 2016-04-25
  • 2022-01-23
  • 2019-02-16
  • 1970-01-01
  • 2021-11-22
相关资源
最近更新 更多