Blazor的Telerik UI?下载30天免费试用

FileSelect事件

本文描述了Blazor的Telerik FileSelect的事件和事件参数:

FileSelectFileInfo

FileSelect事件处理程序提供了一个FileSelectEventArgs论点.它有一个文件属性,即a< FileSelectFileInfo列表>

FileSelectFileInfo类型包含以下属性:

财产 类型 描述
Id 字符串 唯一的文件标识符
的名字 字符串 文件名
大小 以字节为单位的文件大小
扩展 字符串 文件扩展名
InvalidExtension 保龄球 一个布尔标志,显示文件类型是否无效
InvalidMinFileSize 保龄球 一个布尔标志,显示文件大小是否低于最小值
InvalidMaxFileSize 保龄球 一个布尔标志,显示文件大小是否超过最大值
FileInfoStream 一个System.IO.Stream可以用来加载文件到内存,文件系统或其他。用它来异步获取文件内容为字节数组。

由于Blazor框架的限制,FileInfoStream不支持同步操作包括寻求冲洗而且.这些方法已经存在,但将来也会存在抛出异常.一个可能的解决方法是复制FileInfoStream异步到另一个通过CopyToAsync.的OnSelect下面的事件示例演示了这一点。

OnSelect

OnSelect方法选择了一个或多个文件时触发选择文件按钮。包含fileInfo对象的列表,允许对文件进行处理。

事件处理程序接收一个FileSelectEventArgs对象

处理FileSelect的OnSelect事件

处理FileSelect的OnSelect事件,访问所选文件并上传。IO @using Microsoft.AspNetCore.Hosting @using System。Threading @using Telerik.Blazor.Components.FileSelect @inject IWebHostEnvironment HostingEnvironment 
预期文件:JPG, PNG, GIF
@code {public List AllowedExtensions {get;设置;} =新列表<字符串> (){jpg, png”、“gif”};public Dictionary Tokens {get;设置;} = new Dictionary();private async Task HandleFiles(FileSelectEventArgs args) {foreach (var文件在args. files) {if (!file. invalidextension){//保存到本地文件系统等待UploadFile(文件);//或在内存中读取文件//等待ReadFile(file);}}} private async Task UploadFile(FileSelectFileInfo文件){Tokens.Add(文件。Id, new CancellationTokenSource()); var path = Path.Combine(HostingEnvironment?.WebRootPath, file.Name); await using FileStream fs = new FileStream(path, FileMode.Create); await file.Stream.CopyToAsync(fs, Tokens[file.Id].Token); } private async Task ReadFile(FileSelectFileInfo file) { Tokens.Add(file.Id, new CancellationTokenSource()); var byteArray = new byte[file.Size]; await using MemoryStream ms = new MemoryStream(byteArray); await file.Stream.CopyToAsync(ms, Tokens[file.Id].Token); } }

OnRemove

OnRemove从所选文件列表中删除文件时触发x图标或按密钥)。

事件处理程序接收一个FileSelectEventArgs对象.由于FileSelect组件允许一次删除一个项,所以集合只包含一个项FileSelectFileInfo对象(已删除的对象)。

处理FileSelect的OnRemove事件

@ @使用系统处理FileSelect的OnRemove事件来访问和删除上传的文件。IO @using Microsoft.AspNetCore.Hosting @using System。Threading @using Telerik.Blazor.Components.FileSelect @inject IWebHostEnvironment HostingEnvironment 
预期文件:JPG, PNG, GIF
@code {public List AllowedExtensions {get;设置;} =新列表<字符串> (){jpg, png”、“gif”};public Dictionary Tokens {get;设置;} = new Dictionary();private async Task HandleRemoveFiles(FileSelectEventArgs args) {foreach (var file in args. files){//如果你还在上传文件,请先取消这个进程。令牌(file.Id) .Cancel ();Tokens.Remove (file.Id); await Task.Delay(1); var path = Path.Combine(HostingEnvironment?.WebRootPath, file.Name); // Remove the file from the file system File.Delete(path); } } }

这个事件是EventCallback它可以是同步的(返回无效),或者它也可以是异步的并返回异步任务

另请参阅

在本文中
Baidu
map