Проблема с базовым 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);
    }
}
Другие вопросы по тегам