在asp.net Core中上传带有进度更新的中型到大型文件



我说的中型到大型是指10mb -> 200mb(声音文件,如果重要的话)

基本上我想做一个API,对文件本身做一些光谱分析,这需要文件上传。但出于UI/UX的原因,最好有一个上传过程的进度条。实现这种交互的通用架构是什么?

上传文件的客户端应用程序将是javascript客户端(reactjs/redux), API是用ASP编写的。净的核心。我见过一些使用websockets更新客户端进度的例子,以及其他客户端在给定资源url的情况下轮询状态更新以查询状态的例子。对于做这样的事情,我应该知道有什么最佳实践(或"现代的方式")吗?TIA

一般来说,您只需要保存进度状态,同时将控制器中的输入流读取到某个变量(特定于会话的变量,因为可能同时有几个文件上传会话),然后通过ajax请求(或signalr)从客户端获取此状态。

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

我试过11mb的文件没有问题。有一行

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

那里,别忘了在真正的溶液中去掉它。

在这个示例文件是由ajax加载的,所以我没有尝试真正大的文件,但你可以使用iframe解决方案从这个示例:https://github.com/DmitrySikorsky/AspNetCoreFileUploading

另一部分将几乎相同。

希望这对你有帮助。

还有什么问题请尽管问。

最新更新