如何在Blazor WebAssembly中获取静态图像文件的文件路径列表?

时间:2020-06-27 21:51:30

标签: c# .net-core blazor blazor-webassembly wwwroot

我正在尝试获取Blazor WebAssembly项目中wwwroot文件夹内的静态文件列表。到目前为止,这是我尝试过的:

string[] images = Directory.GetFiles(@"wwwroot\images", "*.jpg");

我收到此错误:

crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
  Unhandled exception rendering component: Could not find a part of the path '/wwwroot\images'.

System.IO.DirectoryNotFoundException:找不到路径'/ wwwroot \ images'的一部分。

我在做什么错?谢谢。

1 个答案:

答案 0 :(得分:1)

我首先想到的是Blazor WebAssembly不应该支持Directory.GetFiles()-文件系统上不允许您这样做。
但是运行System.IO.Directory.GetDirectories(".")会得到以下输出:

./tmp
./home
./dev
./proc
./zoneinfo

是您可以获取的一些预打包的文件和文件夹。但是它们都不包含wwwroot和您所追求的内容。

因此,您可以使用Http.GetStreamAsync()Http.GetByteArrayAsync()来获取图像文件的内容,您已经知道其名称。没有直接扫描文件夹的方法:一种安全功能。 (我知道您可以将ISS配置为允许“浏览”文件夹,但这违背了最佳实践,并为您提供了HTML解析的语言。)

如果您确实要扫描文件夹,请构建一个API来进行扫描。您需要在服务器上运行它。