BruceUpload-Asp.NET大组件上传解决方案

这个世界有太多不完善的地方,有许多事情是等待我们去做的.

网络上传文件一直是一件让人头疼的问题,尤其是当上传大文件的时候,由于没有进度条的显示,种让人摸不透到底上传过程是在干什么,并且在上传过程中,我们还常常手足无措,人们通常遇到的情况是:

第一:您的机器将您所要上传的文件传至email服务器的临时文件夹中去,这个过程是漫长的,视网络速度的大小,通常10M的文件要传数分钟,甚至数十分种.

第二:如果一切顺利的话,您所要上传的文件已经全部提交至服务器的临时文件夹区中,此时服务器根据该临时文件的大小,内容等进行判断,判断该临时文件是否符合服务器所事先确定的要求或规则,如果符合则将此临时文件夹转至相应的目录中,这样文件才算完全上传成功,并保存在服务器中待您下次的使用.  可是,问题就来了,如果您发现您所上传的文件不正确,上传了错误的文件,或者您上传的文件不满足email邮箱所要求的最大上传文件大小的限制, 此时您已经无法取消当前上传操作,除非您关闭当前网页......如此以来,漫长的上传等待将会是一件很头疼的事情.

  面对这些问题,一向喜欢封装组件的微软没有给我们提供一个能够准确显示上传动态信息的上传控件,也没有给我们提供上传前就能进行判断的方式,在他的FrameWork中,针对文件上传,只是简简单单的给我们提供了一个不健全的文件上传控件,一切一切的烦恼都留给了人们.

  然而,为什么如此重要的上传功能,到现在还没有一个相对完整并且功能相对完善的上传组件呢,稍微留意以下就可以发现,我们身边所使用的各大Email,比如sina,比如sohu.......也都没有给我们提供很好的上传功能,常常为了一个错误的上传过程而等待许久,甚至在上传过程中,你连取消上传的操作都不能做,sina就更干脆了,直接把当前页面封死,让你一个东西都不能碰. 这是为什么呢? 是为了保证上传过程顺利吗? 非也非也,其实sina是担心用户在上传过程中再触发到当前上传页面中的上传不相干组件而引发错误postback信号而已.

      为什么会有这样的担心呢? 点击上传按钮之外的控件会引发错误回执信号吗? 答案是明确的: 是的.   的确,我们再客户端的页面上的许许多多的控件,只要是能产生触发服务器端响应的控件,都有可能在触发的时候给服务器产生错误的干扰信号,如果您不相信,您只需要做个小小的试验就可以了,这个试验只需要一点点asp.net开发知识就可以了,下面跟着我所描述的操作一步一步来就可以得到试验结果:

       1.打开vs webdeveloper, 新建一个website;

       2.在您新建的website的aspx设计页面中添加一个上传控件,再任意添加一些button或者linkbutton等,通常默认的aspx页面为default.aspx.

       3,对了,别忘记在您的web.config中的<system.web></system.web>之间添加这样一句话哦:<httpRuntime maxRequestLength="2040000" executionTimeout ="3600"/>,   添加后如下:

<system.web>

........

<httpRuntime maxRequestLength="2040000" executionTimeout ="3600"/>

........

</system.web>

这句话是为了让您的网页支持更大的文件上传,真不知道微软是怎么搞的,默认的上传文件大小就给了我们区区几个M.

       4.运行该页面,选择一个稍微大一些的文件,超过100M您将会明显的看到效果,然后随便点击任意一个button,您会发现,无论您点击那个button,页面下方的进度条都会开始滚动,这表明页面已经开始把您选择的文件传送到服务器的临时文件夹中,该临时文件夹地址通常为C:/Users/操作系统用户名/AppData/Local/Temp(如果您的操作系统是安装在C盘中)

       是不是很简单啊,也许你要问了,我还没有给每个button控件定义触发事件呢,甚至上传文件保存地址还没有定义呢,那他怎么就上传了呢?

      是啊,是没有定义呢,为什么呢? 其实这一切都是ie的问题,"孽源"在于ie在页面的每一个能激发服务器端相应的控件被点击的时候,都会把整个页面的控件信息,包括页面环境(context),控件id,控件包含信息都传递给服务器,那个控件是干什么的,叫什么名字,这些控件有什么作用,你点击了那个控件,等等等等都一股脑地传递给服务器,交由服务器分析处理.   这样的实现机理确实不错,方便了服务器端对客户端(也就是页面运行端,在您打开的ie网页端)的控制,然而刚才我们的小试验的问题也就出在这个地方,微软没有把它的fileupload控件做完善,他只做到了对fileupload上传控件是否含有文件的判断,并且一旦fileupload含有您所选择的文件,ie就将此fileupload上传控件所包含的文件内容以及所有的其他页面信息一起传递给服务器,等全部信息上传至服务器完毕,才开始对这些信息进行分析处理,一不小心,服务器发现上传的文件不符合要求,完了,他就给你简单的发个消息告诉你完了,错误了,随后把您上传到服务器临时文件夹中的文件删除了,完事!!  简直太没有道理了,太不符合常规习惯了.

    以上的问题,归根到底,是因为常规上传控件不够完善,针对这个缺陷,然而BruceUpload的出现,弥补了一些缺陷,希望能对大家有一些帮助,目前BruceUpload推出1.0.0.0版本:

       BruceUpload1.0.0.0

效果图:

1.上传中进度条显示:

 

BruceUpload是一个Internet上传控件,采用了最新ASP.NET技术,包括AJAX,具备如下优点:
         1.无 插 件:   客户端无需安装任何插件,再也无需对自己的机器上安装成堆的控件而担心增加机器负担;
         2.效果自然:   采用最新AJAX技术,静态无刷新效果,让上传过程看起来更自然;
         3.准确无误:   采用最新的多线程技术,让上传过程中的上传进度的详细信息准确无误;
         4.无忧触发:   无论您使用的是ASP.NET控件或HTML控件,都能实现"想点谁上传就怎么点谁";
         5.多点触发:   具备控件识别技术,任何您所制定的上传触发控件都能触发上传进程(可以是一个,也可以是多个),并且准确无误,避免了常规上传控件的尴尬局面:无论您单击任何与上传不相关控件时,都会进入上传状态;
         6.安    全:   采用先进的加密技术,一切上传尽在严密之中;
         7.内嵌弹出:   提供两种上传进度显示方式,不仅可以使用弹出窗口显示上传进度,还可以使其内嵌在页面中,让您对页面的安排更加灵活.
         8.超大文件:   最大可以支持2G的上传文件,您再也不用担心客户老是抱怨上传文件大小不够了;
         9.灵活控制:   以往的上传控件,当文件上传进行时,您再也无法终结上传过程了,除非关闭当前网页,而我们的BruceUpload上传控件可以让您什么时候想停止上传就什么时候停止;

我为大家做了一个小demo,欢迎大家试用.

BruceUpload1.0.0.0  20M版本DEMO下载链接:  点击下载

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值