首先我想说下,如果有人说我抽,也没办法。我只想探讨原理,不要组件。
确定问题:上传文件时显示进度信息。
背景分析:还是那句老话,网上有很多进度显示的方案,看了都不是我想要的。不过有很多思路还是挺好的,我想要的是:把比较大的文件分块读取,每读取一块文件向客户端发送一个信号。
有人说用XMLHttpRequest,确实可行,但是只有5个状态,其中一个状态是处理过程,这个关键的状态还是不透明。如果文件很大,这个过程还是要耗比较长的时间的。这样进度的作用未得到完全体现。
个人认为的难点:服务器端读取一块数据,发送一个信号;而不是读完再发送信号。但是程序中的事务机制,事件是不可分割的,要么做完,要么不做。
那么我想突破点在于:重写保存文件的事件。
还有一个想法,就是在客户端将数据分块到缓存,一块一块的上传。不知道具体实现。
第三个想法,根据测试网速的原理,先测试出速度,那么一切就好办了。可是在上传过程中不能保证网络的稳定性。
本人不知道桌面程序是怎么获得进度的,知道的提供个思路呗。所谓分块读取发送信号真的可行吗?WCF,Ajax,iframe,XMLHttpRequest,SwfUPload等关键点在什么地方?……