正如标题所说。网上有很多用于将文件上传到后端的示例,但我在验证客户端/离线后仅上传数据(无文件)。理论上,任何在 .Net5 上运行的东西都应该能够在 WASM 中以接近的性能运行。我正在尝试将这些繁重的操作卸载到客户的机器上。
我在 ClosedXML 方面取得了一些成功,但是当文件有几千行时,它会变得非常慢。在 Blazor 服务器端使用 ClosedXML 轻松加载 100,000 行。
笔记:
页:
@page "/upload"
@inject HttpClient Http
<h1>Upload Data</h1>
<p>This component demonstrates uploading data from Excel.</p>
<InputFile id="fileInput" OnChange="UploadFiles" hidden single />
<MudButton HtmlTag="label"
Variant="Variant.Filled"
Color="Color.Primary"
StartIcon="@Icons.Filled.CloudUpload"
for="fileInput">
Upload Files
</MudButton>
@if (dataTable == null)
{
<p><em>Please upload Excel File</em></p>
}
else
{
<MudTable Items="@dataTable.AsEnumerable().Take(500)" Hover="true" Breakpoint="Breakpoint.Sm" T="DataRow" RowsPerPage="100">
<HeaderContent>
@foreach …
Run Code Online (Sandbox Code Playgroud) 我正在努力解决一个案例,我已经对如何解决这个问题做了很好的研究。它对每个人都有效,但对我不起作用!
环境:
因此,我创建了一个项目,并从一开始就选择了渐进式 Web 应用程序 (PWA),以自动生成我需要的所有内容。还使应用程序 ASP.NET Core 托管。
启动项目是独立模式下的 Rihal.Server(不是 IIS 或 Docker)。
当我启动应用程序时,我在 Chrome 中收到安装应用程序的默认提示。当我单击“+”图标时,我会看到默认的 Blazor 图标和应用程序的名称“Rihal”。到目前为止,一切都很好。当我更改图标和名称时,我仍然保留默认值!
就像清单被完全忽略一样。
我开发了这个应用程序的其他部分,然后更改了图标和名称:
Run Code Online (Sandbox Code Playgroud){ "name": "Rihal Timesheet", "short_name": "Timesheet", "start_url": "./", "display": "standalone", "background_color": "#ffffff", "theme_color": "#03173d", "icons": [ { "src": "icon-512.png", "type": "image/png", "sizes": "512x512" }, { "src": "icon-192.png", "type": "image/png", "sizes": "192x192" } ] }
其他相关文件:
Rihal.Client service-worker.js
Run Code Online (Sandbox Code Playgroud)// In development, always …
asp.net-core manifest.json blazor blazor-webassembly blazor-pwa
我设法在这里找到了一个解决方案,该解决方案展示了如何使用 JS 注入创建控制器和下载文件: 如何使用 Blazor 生成和保存文件客户端?
但是,将 [Authorize] 属性添加到控制器会阻止任何下载文件的尝试(即使已登录)。我希望获得授权的人只能访问下载文件。
网站的其余部分使用 JWT 没有问题。
我的问题是如何将 JWT 身份验证添加到此文件下载功能?或者有其他方法吗?文件在服务器的文件系统中,上面的方法对内存非常友好,所以我更喜欢远离 blob。
注意:我使用的是应用程序内用户帐户。
我现在的情况是:
asp.net-core ×2
blazor ×2
c# ×2
.net-5 ×1
blazor-pwa ×1
closedxml ×1
docker ×1
javascript ×1
npoi ×1