yan*_*kun 10 streaming zip asp.net-web-api asp.net-web-api2
我正在维护一个网站,用户可以将图片和其他文件放在一个购物车中.在选择用户希望下载的所有各种内容之后,他可以结账.直到'现在,事先生成了一个存档,并且用户在生成完成后收到了一封包含该文件链接的电子邮件.
我现在通过使用web api和push stream直接生成存档来改变它.我的代码动态提供zip,zip64或.tar.gz,具体取决于估计的文件大小和操作系统.出于性能原因,压缩设置为最佳速度('none'会使zip存档与Mac OS不兼容,我正在使用的gzip库不提供).
到目前为止这工作得很好,但用户在下载文件时不再有进度条,因为我没有设置内容长度.解决这个问题的最佳方法是什么?我试图猜测得到的文件大小,但是浏览器要么提前取消下载,要么停止99,x%并等待丢失的字节,从而导致估计文件大小和实际文件大小之间的差异.
我的第一个想法是猜测生成的文件大小总是有点大,并用零填充其余的?
我见过许多文件托管商提供从文件夹中选择文件并将它们放入zip文件的可能性,并且所有文件都具有正确的(?)文件大小和进度条.任何最佳做法?谢谢!
这只是一些想法,也许你可以使用它们:)
使用Web API/HTTP,正常的方法是响应包含文件的长度.由于在呼叫结束后首先收到响应,因此生成文件的实际时间不会在Windows等待光标以外的任何浏览器中显示任何进度条.
你可以做的是使用两步法.
生成zip文件 使用SignalR创建类似双工的通道,以提供有关文件生成的反馈.
下载zip文件 生成文件后,您应该知道文件大小,浏览器将在下载时显示进度条.
归档时间: |
|
查看次数: |
234 次 |
最近记录: |