如何获取MudFileUpload选中文件的完整路径?
问题分析与解决方案
为什么拿不到文件完整路径
浏览器出于安全限制,不会给网页暴露本地文件的真实完整路径——这是浏览器的核心安全机制,防止网页获取用户本地文件系统的敏感信息。所以不管是IBrowserFile还是InputFileChangeEventArgs,都不可能拿到文件的本地路径。
正确做法:直接读文件流就行
你根本不需要完整路径,直接通过IBrowserFile提供的文件流就能读取CSV内容。给你调整后的代码:
Page.razor 代码
添加绑定CSV内容的输入框:
<MudFileUpload T="IBrowserFile" Accept=".csv" OnFilesChanged="OnFilesChanged" FilesChanged="UploadFiles"> <ButtonTemplate> <MudIconButton HtmlTag="label" Icon="@Icons.Material.Filled.AttachFile" for="@context"> </MudIconButton> </ButtonTemplate> </MudFileUpload> <input type="text" @bind="@CsvContent" style="width:100%; margin-top:1rem;" />
Page.razor.cs 代码
修改方法读取文件内容:
public string CsvContent { get; set; } = string.Empty; private async Task UploadFiles(IBrowserFile file) { // 直接打开文件流读取内容 using var stream = file.OpenReadStream(); using var reader = new StreamReader(stream); CsvContent = await reader.ReadToEndAsync(); } public void OnFilesChanged(InputFileChangeEventArgs e) { Console.WriteLine(e.File.Name); }
补充说明
- 用
file.OpenReadStream()就能拿到文件的流,直接读内容就行,完全不需要依赖本地路径。 - 用异步方法
ReadToEndAsync()读取,避免阻塞UI线程。 - 读取到的内容绑定到
CsvContent后,会自动同步到输入框中显示。
内容的提问来源于stack exchange,提问作者TheBoubou
相关产品推荐
相关产品推荐

