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
它可以是同步的(返回无效
),或者它也可以是异步的并返回异步任务
.