none
我想实现一个上传及后台处理,前台显示的效果,请高手给点思路或者范例! RRS feed

  • 问题

  • 上传一个压缩文件,里面包括很多指定的文件夹,在服务器上我解压缩,然后开始检索下面的文件夹,以及每个文件夹下面的内容,比如有excel的话,可能会根据要求读出其中的内容保存在数据库中,就这么一个过程,我的想法是,从点击上传开始,页面上会一步一步的显示后台的操作:比如第一步显示,上传文件成功,然后解压缩成功,接下来开始检查文件夹的命名是否规范,是否有遗漏,某个文件信息读取成功,等信息来提示上传人,后台已经执行到那一步了,我在想前台怎么实时的显示后台的工作?谢谢!
    2011年1月6日 1:41

答案

  • 我觉得,基本上这个问题无解。你的问题是发布在在ASP.NET与AJAX这个版块的,肯定程序是采用的B/S架构。我觉得,在这种架构下,服务器是不会主动往客户端推数据的,也就是说,无论是上传完毕,还是解压完毕。服务器根本就不会通知客户端,或者说无从通知。在这种情况下,怎么能在客户端显示操作进度呢?要不,你就采用C/S的思想,比如我知道某些上传组件,是基于flash技术的,他可以动态显示上传的状态以及是否上传完毕。至于后继的操作,比如显示解压的状态,显示数据执行的状态,我也没有什么思路。

    我知道现在有一种叫做“长连接”的技术,不过不了解具体,请不知道是否能应用在你的这个问题上,关注中希望高手来解答这个问题。


    自强不息,厚德载物
    2011年1月6日 2:17
  • 你好,可以尝试在客户端轮询的方法,每隔一段时间向服务器发送请求。根据每次返回的内容,来更新UI。在后台,可以使用多线程的方法,来监视文件的状态。

    用一个空间,比如数组来存放进度信息。比如,如果解压完毕,则更新这个数组。每次轮询的时候都会去读一下这个空间的内容,如果空间已经更新过了,让服务器返回解压完毕的信息。以此类推。


    A marked answer is appreciated.
    2011年1月11日 6:46
    版主

全部回复

  • 我觉得,基本上这个问题无解。你的问题是发布在在ASP.NET与AJAX这个版块的,肯定程序是采用的B/S架构。我觉得,在这种架构下,服务器是不会主动往客户端推数据的,也就是说,无论是上传完毕,还是解压完毕。服务器根本就不会通知客户端,或者说无从通知。在这种情况下,怎么能在客户端显示操作进度呢?要不,你就采用C/S的思想,比如我知道某些上传组件,是基于flash技术的,他可以动态显示上传的状态以及是否上传完毕。至于后继的操作,比如显示解压的状态,显示数据执行的状态,我也没有什么思路。

    我知道现在有一种叫做“长连接”的技术,不过不了解具体,请不知道是否能应用在你的这个问题上,关注中希望高手来解答这个问题。


    自强不息,厚德载物
    2011年1月6日 2:17
  • 基本无解啊,主要是要及时的显示出来这个太难了
    2011年1月6日 5:10
  • 您好,在Google中查询“asp.net上传大文件”,深入一下asp.net的相关工作机制。用多线程加上Ajax即可实现。
    2011年1月6日 9:11
    版主
  • 上传一个压缩文件,里面包括很多指定的文件夹,在服务器上我解压缩,然后开始检索下面的文件夹,以及每个文件夹下面的内容,比如有excel的话,可能会根据要求读出其中的内容保存在数据库中,就这么一个过程,我的想法是,从点击上传开始,页面上会一步一步的显示后台的操作:比如第一步显示,上传文件成功,然后解压缩成功,接下来开始检查文件夹的命名是否规范,是否有遗漏,某个文件信息读取成功,等信息来提示上传人,后台已经执行到那一步了,我在想前台怎么实时的显示后台的工作?谢谢!

    这个需求AJAX不能实现吗?

    每处理一步返回结果,如果成功开始下一步请求

    2011年1月6日 11:46
  • 你好,可以尝试在客户端轮询的方法,每隔一段时间向服务器发送请求。根据每次返回的内容,来更新UI。在后台,可以使用多线程的方法,来监视文件的状态。

    用一个空间,比如数组来存放进度信息。比如,如果解压完毕,则更新这个数组。每次轮询的时候都会去读一下这个空间的内容,如果空间已经更新过了,让服务器返回解压完毕的信息。以此类推。


    A marked answer is appreciated.
    2011年1月11日 6:46
    版主