我正在尝试获取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'的一部分。
我在做什么错?谢谢。
答案 0 :(得分:1)
我首先想到的是Blazor WebAssembly不应该支持Directory.GetFiles()
-文件系统上不允许您这样做。
但是运行System.IO.Directory.GetDirectories(".")
会得到以下输出:
./tmp
./home
./dev
./proc
./zoneinfo
是您可以获取的一些预打包的文件和文件夹。但是它们都不包含wwwroot和您所追求的内容。
因此,您可以使用Http.GetStreamAsync()
或Http.GetByteArrayAsync()
来获取图像文件的内容,您已经知道其名称。没有直接扫描文件夹的方法:一种安全功能。 (我知道您可以将ISS配置为允许“浏览”文件夹,但这违背了最佳实践,并为您提供了HTML解析的语言。)
如果您确实要扫描文件夹,请构建一个API来进行扫描。您需要在服务器上运行它。