Каков наилучший способ загрузки файлов с Blazor? - PullRequest
1 голос
/ 01 апреля 2020

Я нашел библиотеку BlazorInputFile , но с октября 2019 года открыты PR, и я не уверен, что эта библиотека сейчас поддерживается. Кроме того, я нашел пару статей в блогах о том, как мы можем загружать файлы с JS в Blazor. Я пытаюсь выяснить, каков наилучший способ загрузки файлов с помощью Blazor, и я не хочу использовать JS, если это возможно. Может быть, кто-то уже исследовал эту проблему и нашел лучшее решение?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2020

При текущем положении дел (по состоянию на 2 апреля 2020 года) вам потребуется JS, это неизбежно.

Существует два основных подхода:

  • получить данные файла в событии onchange ввода и вызвать методы C#, передав им byte[] - это в основном подход к селектору файлов, который вы связали, когда вы получаете данные файла в Blazor приложение, чтобы делать с ним все, что вы хотите.

  • получить данные файла в событии onchange ввода и использовать JS для вызова удаленной конечной точки, которая получит файл и сделайте что-нибудь с этим (например, сохраните это на своем NAS или поместите в свою БД). Это фактическая загрузка файла, в отличие от селектора файлов.

Оба подхода похожи с точки зрения кодирования - вам нужно JS. Возможно, в будущей версии Blazor мы получим <InputFile>, который сделает выбор, чтобы вы могли загружать с C# HTTP-запросами.

Подход File Selector относительно прост в реализации (буквально несколько линии), но он не дает вам файл на сервере, вам придется немного поработать над этим. Подход к загрузке файлов сложнее понять. Я лично использовал бы пакет другого для любого. Для загрузки файлов такие вещи, как Telerik UI для Blazor могут быть коммерчески пригодны, а для более простых селекторов уже есть другой ответ, который связывает примеры. Кстати, у демонстраций Telerik также есть один такой пример в качестве компонента, реализованного для некоторых демонстраций.

1 голос
/ 01 апреля 2020

У меня есть оболочка для входного файла Стива Сандерсона Blazor:

Пакет Nuget: DataJuggler.Blazor.FileUpload

Исходный код и пример проекта:

https://github.com/DataJuggler/BlazorFileUpload

Я знаю, что он не обновил свой, но я стараюсь держать его в курсе.

...