C# 如何使用ServiceStack客户端恢复大文件下载并获得下载进度?
我有一个ServiceStack客户端,它调用一个返回100MB到10GB之间的大数据文件的服务。目前,该客户端使用C# 如何使用ServiceStack客户端恢复大文件下载并获得下载进度?,c#,
servicestack,resume-download,C#,
servicestack,Resume Download,我有一个ServiceStack客户端,它调用一个返回100MB到10GB之间的大数据文件的服务。目前,该客户端使用Stream.CopyTo方法保存到文件,在局域网上运行良好 当客户机在WAN上运行时(除了在LAN上运行),在停止或断开连接时恢复下载以及查看进度的能力变得非常重要 该服务支持发送部分文件,但我不清楚如何在ServiceStack客户端中支持这一点,即使它是内置的,我也没有意识到这一点 另外,stream上的CopyTo方法将复制到另一个stream不会报告其进度,因此对于一个大
Stream.CopyTo
方法保存到文件,在局域网上运行良好
当客户机在WAN上运行时(除了在LAN上运行),在停止或断开连接时恢复下载以及查看进度的能力变得非常重要
该服务支持发送部分文件,但我不清楚如何在ServiceStack客户端中支持这一点,即使它是内置的,我也没有意识到这一点
另外,stream
上的CopyTo
方法将复制到另一个stream
不会报告其进度,因此对于一个大文件,它可能需要数小时的时间,您无法判断其进度。我看到过关于报告进度的CopyFrom
方法的帖子,但我在我使用的类中找不到
我的环境是Mac OS X上最新版本的ServiceStack和Mono,以及Windows上最新版本的.NET 4.5
能够同时下载不同片段的文件将是理想的,但能够恢复下载将是一个巨大的帮助
有人能指出在ServiceStack客户端中执行此操作的最佳方法吗?我发现的大多数示例都是针对普通web客户端的,而且非常古老,所以我想看看使用更高版本的dotnet和mono以及ServiceStack的最佳方法是什么
如果可能,一个基本示例将是完美的。ServiceStack支持返回的服务:
物理文件
内存流
原始文本
通过ServiceStack提供的静态文件
部分内容也可以通过ServiceStack直接下载静态文件,通过ServiceStack,您可以流式播放mp3下载,或者在您需要下载static.html、.css、.js等文件时可以下载
有关如何使用请求部分下载的示例,请参阅。服务器端已全部处理完毕且正常工作,因此它只是客户端。如果我理解正确,我应该使用http utils GetBytesFromUrl方法和单元测试中的头,将小数据块放入内存,然后将它们写出。如果是这样的话,那么我将使用包装类来实现这一点,我将在任何地方重用它。
return new HttpResult(new FileInfo(filePath), request.MimeType);
return new HttpResult(ms, "audio/mpeg");
return new HttpResult(customText, "text/plain");