Blazor — перетаскивание загружаемого файлаC#

Место общения программистов C#
Ответить
Anonymous
 Blazor — перетаскивание загружаемого файла

Сообщение Anonymous »

У меня возникла проблема с загрузкой файла через API перетаскивания.Вот следующий компонент blazor:

Код: Выделить всё

 


@code {
private async Task HandleDrop(DragEventArgs args)
{
var files = args.DataTransfer.Files;
// Do something to upload the file and get the content
}
Я хочу загрузить файл и отобразить его в текстовой области. Теперь, поскольку .NET6, DragEventArgs будет перечислять все файлы (если таковые имеются), связанные с событием Drag'n Drop.
По-видимому, изначально нет способа получить содержимое этих файлов.
Поэтому я попытался добиться этого с помощью взаимодействия с JavaScript:

Код: Выделить всё

private async Task HandleDrop(DragEventArgs args)
{
var content = await jsRuntime.InvokeAsync("getContentFromFile", args);
}
С помощью следующей функции JavaScript (на которую есть ссылка в _Layout.cshtml):

Код: Выделить всё

async function getContentFromFile(args) {
// Use some API here? File Upload API? Didn't work as args is only a data object and not the "real" DragEventArgs from JavaScript

// I also tried FileReader
const fileName = args.Files[0]; // Let's assume we always have one file
let content = await new Promise((resolve) => {
let fileReader = new FileReader();
fileReader.onload = (e) => resolve(fileReader.result);
fileReader.readAsText(fileName);
});

console.log(content);
return content;

}
Этот подход допускает другие проблемы и исключения, например, которые FileReader выдал:

параметр не имеет типа «Blob»

Возможно ли это при таком подходе с текущей версией blazor (.net6) вообще? Любые советы приветствуются.

Подробнее здесь: https://stackoverflow.com/questions/705 ... loads-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»