Проблема с базовым URL-адресом при доступе к PNG-изображению по URL-адресу
Я использую веб-сборку Blazor с размещенным ASP.NET Core. Я установил базовый URL на "/"
Я хочу преобразовать изображение из URL-адреса в массив байтов Поэтому я использую приведенный ниже код для преобразования
string imageUrl = "https://homepages.cae.wisc.edu/~ece533/images/frymire.png";
var imageBytes = await File.ReadAllBytesAsync(imageUrl);
Но веб-сборка Blazor дает следующую ошибку во время выполнения
blazor.webassembly.js:1 критика: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] Компонент визуализации необработанного исключения: не удалось найти часть пути "https:/homepages.cae.wisc.edu/~ece533/images/frymire.png". System.IO.DirectoryNotFoundException: не удалось найти часть пути "/https:/homepages.cae.wisc.edu/~ece533/images/frymire.png". в System.IO.FileStream..ctor (путь System.String, режим System.IO.FileMode, доступ к System.IO.FileAccess, общий ресурс System.IO.FileShare, System.Int32 bufferSize, анонимный System.Boolean, System.IO. Параметры FileOptions) <0x2de83f8 + 0x00258> в:0 в System.IO.FileStream..ctor (путь System.String, режим System.IO.FileMode, доступ к System.IO.FileAccess, общий ресурс System.IO.FileShare, System.Int32 bufferSize, параметры System.IO.FileOptions) <0x35ad778 + 0x0001c> in:0 в System.IO.File.ReadAllBytesAsync (System.String path, System.Threading.CancellationToken cancellationToken) <0x35a9718 + 0x0003a> в:0 в SlashCare.Client.Pages.Admin.Category.CategoryComponent.EditCategory.CategoryComponent.EditCategory categoryId) [0x0011f] в D:\Projects\SlashCare\Client\Pages\Admin\Category\CategoryComponent.razor.cs:72 в Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion (System.Threading.Tasks.Taskfask9d710 + 0x000da> в:0 в Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask (System.Threading.Tasks.Task taskToHandle) <0x2f9a270 + 0x000b6> в:0CategoryComponent.EditCategoryOpenAsync (System.Guid categoryId) [0x0011f] в D:\Projects\SlashCare\Client\Pages\Admin\Category\CategoryComponent.razor.cs:72 в Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsync Tasks.Task task) <0x2f9d710 + 0x000da> в:0 в Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask (System.Threading.Tasks.Task taskToHandle) <0x2f9a270 + 0x000b6> в:CategoryComponent.EditCategoryOpenAsync (System.Guid categoryId) [0x0011f] в D:\Projects\SlashCare\Client\Pages\Admin\Category\CategoryComponent.razor.cs:72 в Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsync Tasks.Task task) <0x2f9d710 + 0x000da> в:0 в Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask (System.Threading.Tasks.Task taskToHandle) <0x2f9a270 + 0x000b6> в:Tasks.Task taskToHandle) <0x2f9a270 + 0x000b6> в:0Tasks.Task taskToHandle) <0x2f9a270 + 0x000b6> в:0
Как я вижу в ошибке, / автоматически добавляется к пути, который вызывает эту проблему
Любое решение этой проблемы?
2 ответа
Вам нужно использовать HttpClient для извлечения данных из URL-адреса, а не из файла.
Используйте HTTP-запрос вместо файла:
@inject HttpClient _httpClient
@code {
private async Task LoadFileAsync()
{
string imageUrl = "https://homepages.cae.wisc.edu/~ece533/images/frymire.png";
using var response = await _httpClient.GetAsync(imageUrl).ConfigureAwait(false);
var imageBytes = await response.Content.ReadAsByteArrayAsync().ConfigureAwait(false);
}
}