如何在 Blazor WebAssembly 中获取静态图像文件的文件路径列表?
How can I get a list of file paths for static image files in Blazor WebAssembly?
我正在尝试获取 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”的一部分。
我做错了什么?谢谢。
我的第一个想法是 Blazor WebAssembly 不应该支持 Directory.GetFiles()
- 文件系统不允许您使用。
但是 运行ning System.IO.Directory.GetDirectories(".")
给出了这个输出:
./tmp
./home
./dev
./proc
./zoneinfo
哪些是您可以获得的预打包文件和文件夹。但是 none 其中包含 wwwroot 和您要查找的内容。
因此您可以使用Http.GetStreamAsync()
或Http.GetByteArrayAsync()
获取图像文件的内容您已经知道 的名称。没有直接扫描文件夹的方法:一种安全功能。 (我知道您可以配置 ISS 以允许 'browsing' 一个文件夹,但这违背了最佳实践并让您 HTML 可以解析)。
如果您确实想要扫描文件夹,请构建一个 API 来执行此操作。您需要 运行 服务器上的那个。
请获取如下“图片”目录路径:
string folderPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "images");
string[] images = Directory.GetFiles(folderPath, "*.jpg");
希望它能奏效。
我正在尝试获取 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”的一部分。
我做错了什么?谢谢。
我的第一个想法是 Blazor WebAssembly 不应该支持 Directory.GetFiles()
- 文件系统不允许您使用。
但是 运行ning System.IO.Directory.GetDirectories(".")
给出了这个输出:
./tmp
./home
./dev
./proc
./zoneinfo
哪些是您可以获得的预打包文件和文件夹。但是 none 其中包含 wwwroot 和您要查找的内容。
因此您可以使用Http.GetStreamAsync()
或Http.GetByteArrayAsync()
获取图像文件的内容您已经知道 的名称。没有直接扫描文件夹的方法:一种安全功能。 (我知道您可以配置 ISS 以允许 'browsing' 一个文件夹,但这违背了最佳实践并让您 HTML 可以解析)。
如果您确实想要扫描文件夹,请构建一个 API 来执行此操作。您需要 运行 服务器上的那个。
请获取如下“图片”目录路径:
string folderPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "images");
string[] images = Directory.GetFiles(folderPath, "*.jpg");
希望它能奏效。