File 如何使用Blazor上传本地json文件

File 如何使用Blazor上传本地json文件,file,input,blazor,File,Input,Blazor,我试图选择一个本地json文件并将其加载到blazor客户端组件中 <input type="file" onchange="LoadFile" accept="application/json;.json" class="btn btn-primary" /> protected async Task LoadFile(UIChangeEventArgs args) { string data = args.Value as string;

我试图选择一个本地json文件并将其加载到blazor客户端组件中

 <input type="file" onchange="LoadFile" accept="application/json;.json" class="btn btn-primary" />
protected async Task LoadFile(UIChangeEventArgs args)
        {
            string data = args.Value as string;
        }

P、 S我不明白,在检索文件时是否需要同时跟踪文件名和内容?

我猜您是想在客户端Blazor上读取JSON文件的内容,对吗?为什么不在服务器上呢

无论如何,args.Value只能为您提供文件名。为了读取文件的内容,您可以使用FileReader API,请参见此处:。这意味着您应该使用JSIntrop与FileReader API进行通信。但在开始之前,我建议您尝试了解该API是否已由社区实现,如localStorage等。。您可能还需要将读取的内容反序列化为有意义的内容,例如C对象


希望这有助于

有一个工具可以提供帮助,但它目前不支持3.0预览


与开发人员无关输入控件将以完整路径和文件名的形式为您提供文件的位置。然后您仍然需要检索文件并将其下载到服务器

延迟响应,但在3.1版本中,有一个额外的AspNetCore.Components模块,您可以通过NuGet下载以访问HttpClient扩展。这使问题变得简单:

// fetch mock data for now
var results = await _http.GetJsonAsync<WellDetail[]>("sample-data/well.json");
您可以从输入控件中插入文件的位置,以代替示例数据/well.json字符串

比如:

using Microsoft.AspNetCore.Components;

private async Task<List<MyData>> LoadFile(string filePath)
{
  HttpClient _http;

  // fetch data 
  // convert file data to MyData object
  var results = await _http.GetJsonAsync<MyData[]>(filePath);

  return results.ToList();
}

我不明白你面临的问题是什么。