Входной файл сервера Blazor не будет работать на мобильных устройствах

#blazor #blazor-server-side

#blazor #blazor-на стороне сервера

Вопрос:

Привет, я использую компонент InputFile в Blazor Server (.NET 6), он работает как шарм в настольных браузерах, но в мобильных устройствах он просто не работает!

вот код:

 <div class="col-md-12">
                        <label class="form-label">
                            @Localizer["pet-information-photograph"]
                            <button type="button" class="btn btn-outline-modal f-15 rounded-circle font-weight-bold white btn-sm" @onclick="@(() => ModalPetPhotograph())">?</button>
                        </label>
                        <InputFile class="form-control" OnChange="ProcessPhotographs" accept=".png,.pdf" />
                        <small>@Localizer["page-rus-petInformation-fileValidateSize"]</small>
                    </div> 

и метод:

  async Task ProcessPhotographs(InputFileChangeEventArgs e)
        {
            photographBase64 = string.Empty;

            if (e.FileCount > 0)
            {
                foreach (var img in e.GetMultipleFiles(1))
                {
                    var arrbytes = new byte[img.Size];
                    try
                    {
                        if (img.Size < 1024000 amp;amp; (img.ContentType.Contains("png") || img.ContentType.Contains("jpg") || img.ContentType.Contains("pdf")))
                        {
                            await img.OpenReadStream(1024000).ReadAsync(arrbytes);
                            photographBase64 = $"data:{img.ContentType};base64,{Convert.ToBase64String(arrbytes)}";
                        }
                        else
                        {
                            ToastService.ShowWarning(Localizer["page-petInformation-fileValidateSize"], Localizer["toast-warning"]);
                            isLoading = false;
                            return;
                        }
                    }
                    catch (Exception ex)
                    {
                        logger.LogError(ex, ex.Message);
                    }
                }
            }
            else
            {
                ToastService.ShowWarning(Localizer["msg-toast-photograph"], Localizer["rus-toast-warning"]);
                isLoading = false;
                return;
            }
            additionalPet.Photograph = photographBase64;
        } 

Есть идеи, как заставить его работать на мобильных устройствах?

Комментарии:

1. Проверьте этот код — это компонент из моего приложения, я разработал его для загрузки изображений на сервер blazor. Использует кнопки MudBlazor, но в данном случае это не должно иметь значения для вас. Он также работает на мобильных устройствах.

Ответ №1:

Я обнаружил проблему, оказывается, что способ, которым я читал файл, вызывал проблему, что после многих попыток мы изобразили ошибочный код и заменили его для этого:

 using (var ms = new System.IO.MemoryStream())
                        {
                            await img.OpenReadStream(1024000).CopyToAsync(ms);
                            var arrbytes = ms.ToArray();