在 Asp Net Core 中上传带有进度更新的中型到大型文件

Medium to large file uploads with progress updates in AspNet Core

我所说的中型到大型是指 10mb -> 200mb 之间的任何东西(声音文件,如果这很重要)

基本上我想制作一个 API 对文件本身进行一些光谱分析,这需要上传文件。但是出于 UI/UX 的原因,上传过程有一个进度条会很好。实现这种交互的常用架构有哪些。

上传文件的客户端应用程序将是一个 javascript 客户端 (reactjs/redux) 并且 API 是在 ASP.NET 内核中编写的。我看过一些使用 websockets 更新客户端进度的示例,以及其他示例,其中客户端轮询给定资源 url 以查询状态的状态更新。有没有我应该知道的做这样的事情的最佳实践(或 "modern way of doing this")? TIA

一般情况下,您只需要在将控制器中的输入流读取到某个变量(session-specific 变量,因为可能同时有几个文件上传会话)时保存进度状态,然后通过 ajax 请求(或信号器)从 client-side 获取此状态。

你可以看看这个例子:https://github.com/DmitrySikorsky/AspNetCoreUploadingProgress

我试过 11 MB 的文件,没有问题。有行

await Task.Delay(10); // It is only to make the process slower

那里,真解中别忘了去掉

在此示例中,文件由 ajax 加载,因此我没有尝试使用非常大的文件,但您可以使用此示例中的 iframe 解决方案: https://github.com/DmitrySikorsky/AspNetCoreFileUploading

其他部分就差不多了

希望对您有所帮助。如有任何其他问题,请随时提出。