再谈web开中几种经典的大文件上传组件

1.aspnetupload

这是国人开发的一款收费.net控件,官网http://www.aspnetupload.net/ (不过也有一个免费版本的,允许上传10M内容,一般情况下也够了,收费版也不贵,大致就600 RMB)

它的大概原理是把文件分成一块一块的上传,然后客户端用ajax不断刷新从而显示进度条.


这也是我使用时间最长的一种解决方案,在IIS7出现以前完全没有任何问题,但IIS7及以上版本中,如果用了这个控件,应用程序池就只能运行在“经典”模式下,无法充分发挥IIS7的优点。

我向作者反馈过该问题,遗憾的是貌似作者也没有改进的意思。

 

2.silverlightUpload 开源项目

完全免费,官网地址:http://silverlightfileupld.codeplex.com/

大致原理:利用silverlight做界面,点击上传时发起post请求到服务端,然后不断回调显示进度。

开启图片缩略图预览后的样子如下:

 

缺点:就是有点粗糙,不方便与Form表单整合.

这是我"汉化"后的源文件(其实也就是改了改颜色,把英文换成了中文,呵呵)

http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Silverlight/SilverlightFileUploadSrc.rar

 

3.swfupload 开源项目

也是免费的,同时也是功能最强大的 官网地址:http://www.swfupload.org/

在线演示:http://demo.swfupload.org/v220/index.htm

这个项目很成熟,推荐使用。

http://cid-2959920b8267aaca.skydrive.live.com/self.aspx/Web%e5%bc%80%e5%8f%91/SwfUpload^_Single^_FormDemo^_For^_Asp.Net^_4.0.rar

这是我做的一个小Demo(Asp.Net4.0环境下的,必须用VS2010打开)

最后要提醒的一点是:安全第一!凡是有上传的地方,都是可以上传木马的地方,不要相信任何客户端提交过来的文件。(比如客户可以把.aspx改成.jpg上传,如果服务器管理员发神经把.jpg映射成跟.aspx一样,嘿嘿...)

所以我的建议是:一定要在服务端检测文件MIME类型,要伪造这个是比较困难的,相对更安全;同时服务端上的上传目录不要给予任何执行权限,只要读取权限即可.

时间: 2024-11-05 04:19:32

再谈web开中几种经典的大文件上传组件的相关文章

Java中使用内存映射实现大文件上传实例_java

在处理大文件时,如果利用普通的FileInputStream 或者FileOutputStream 抑或RandomAccessFile 来进行频繁的读写操作,都将导致进程因频繁读写外存而降低速度.如下为一个对比实验. 复制代码 代码如下: package test;  import java.io.BufferedInputStream;  import java.io.FileInputStream;  import java.io.FileNotFoundException;  impor

Web开发中的文件上传组件uploadify的使用

在Web开发中,有很多可以上传的组件模块,利用HTML的File控件的上传也是一种办法,不过这种方式,需要处理的细节比较多,而且只能支持单文件的操作.在目前Web开发中用的比较多的,可能uploadify(参考http://www.uploadify.com/)也算一个吧,不过这个版本一直在变化,他们的脚本调用也有很大的不同,甚至调用及参数都一直在变化,很早的时候,那个Flash的按钮文字还没法变化,本篇随笔主要根据项目实际,介绍一下3.1版本的uploadify的控件使用,这版本目前还是最新的

java web项目 大文件上传

问题描述 项目中需要上传大文件(视频),考虑到性能因素,决定选择使用ftp工具上传,服务器用的是vsftp(linux).在网上找了好多资料,决定选用uploadify+struts2(因为框架使用的是SSI)实现.ftp选用的是apache提供的客户端工具.目前遇到的问题是ftp客户端与服务器建立连接时间过长(大概需要20秒左右),前端需要长时间等待.也可以给提供解决问题的思路. 解决方案 本帖最后由 wuwei19871020 于 2015-01-07 12:11:42 编辑解决方案二:用过

MVC中基于Ajax和HTML5实现文件上传功能_AJAX相关

引言 在实际编程中,经常遇到实现文件上传并显示上传进度的功能,基于此目的,本文就为大家介绍不使用flash 或任何上传文件的插件来实现带有进度显示的文件上传功能. 基本功能:实现带有进度条的文件上传功能 高级功能:通过拖拽文件的操作实现多个文件上传功能 背景 HTML5提供了一种标准的访问本地文件的方法--File API规格说明,通过调用File API 能够访问文件信息,也可以利用客户端来验证上传文件的类型和大小是否规范. 该规格说明包含以下几个接口来使用文件: File接口:具有文件的"读

JAVA WEB怎么实现大文件上传(上G的文件)

问题描述 JAVAweb怎么实现上G的文件上传.好像用Struct2对大文件支持有限.比如百度云硬盘,还要邮箱的大附件上传方式.都是用什么技术实现的,activex技术,ftp方式,还是其他什么方式 解决方案 解决方案二:解决这种大文件上传不太可能用web上传的方式,只有自己开发插件或是当门客户端上传,或者用现有的ftp等.1)开发一个web插件.用于上传文件.2)开发一个FTP工具,不用web上传.3)用现有的FTP工具.下面是几款不错的插件,你可以试试:1)Jquery的uploadify插

MVC中基于Ajax和HTML5实现文件上传功能

引言 在实际编程中,经常遇到实现文件上传并显示上传进度的功能,基于此目的,本文就为大家介绍不使用flash 或任何上传文件的插件来实现带有进度显示的文件上传功能. 基本功能:实现带有进度条的文件上传功能 高级功能:通过拖拽文件的操作实现多个文件上传功能 背景 HTML5提供了一种标准的访问本地文件的方法--File API规格说明,通过调用File API 能够访问文件信息,也可以利用客户端来验证上传文件的类型和大小是否规范. 该规格说明包含以下几个接口来使用文件: File接口:具有文件的"读

1、提供一个提交的按钮,并在按钮的OnClick事件中添加代码,用于完成文件上传。

问题描述 1.提供一个提交的按钮,并在按钮的OnClick事件中添加代码,用于完成文件上传.2.限制上传文件的类型,例如,限制为.jpg和.bmp类型的图片文件.3.限制上传文件的大小为100K.. 解决方案 解决方案二:直接用fileupload控件服务器端可以判断下if((Path.GetExtentsion(Request.Files[0].FileName==".jpg"||Path.GetExtentsion(Request.Files[0].FileName=="

详解springMVC两种方式实现多文件上传及效率比较_java

springMVC实现多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实现多文件上传效率上却有着很大的差距,下面我们通过实例来看一下这两种方式的实现方式,同时比较一下在效率上到底存在着多大的差距. 1.下载相关jar包.需要引入的jar出了springMVC的jar包外,还需要引入com.springsource.org.apache.commons.fileupload-1.2.0.jar和com.s

PHP中使用Session配合Javascript实现文件上传进度条功能_php技巧

Web应用中常需要提供文件上传的功能.典型的场景包括用户头像上传.相册图片上传等.当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了. 在PHP 5.4以前,实现这样的进度条并不容易,主要有三种方法: 1.使用Flash, Java, ActiveX 2.使用PHP的APC扩展 3.使用HTML5的File API 第一种方法依赖第三方的浏览器插件,通用性不足,且易带来安全隐患.不过由于Flash的使用比较广泛,因此还是有很多网站使用Flash作为解决方案. 第二种方法的不足