IT行业资讯

当前位置: 首页/新闻•资讯/IT行业资讯/正文

软件开发—数据文件上传

发布时间:2013-7-26 来源:小编

  文件上传本应该是与导入无关,但它处于数据导入功能的一个环节,其效率也显得有些重要。对于传统项目,文件上传通常采用Struts等框架实现的文件上传机制以及一些开源的文件上传组件,比如SmartUpload等,通过Html中类型为File的Input标签将数据文件获取,通过流的形式发送服务端,最后由服务端获取流并写入文件,如此实现了文件从客户端到服务器的上传过程,这些方式我们都可以将其统一称为Web文件上传。

  Web文件上传是通过Http协议实现的文件流传输,其受限于Web数据传输的瓶颈,基于Http协议传输的数据在传输的速度上有一定影响,首先可能出现数据文件请求超时需要数据重传;其次在每秒能传输的字节数在Web方式里受到限制;最后,由于Web在传输数据文件之前需要将数据文件转化为数据流,通过Web的File标签实现的文件流化效率很低,通过对比试验发现,同样对一个50M的文件流化,用Web的File标签流化的时间要大于采用IO方式流化所消耗的时间,也就是说,对于大数据文件,要将其通过Web标签流化再传输,可能会有很长一段时间是处于发送请求状态,甚至会因为这个过程的时间持续较长而造成网络请求超时。这可能是优酷等类似的网站上传视频不采用Web方式的一个原因。

  除了Web方式,可以考虑使用Applet,作为一个客户端小程序嵌入到网页中,以IO的方式读取本地数据文件,然后通过Socket将文件流发送到服务端。这种方式从效率上比Web方式有明显的改进,首先是通过IO将文件转化为文件流的效率提升,其次数据通过Socket方传输式,是一种基于TCP协议的网络传输,去除了Web下Http协议对文件传输的限制,通过TCP协议直接从网络的传输层进行数据通信,传输速度上必然会更快。综上,采用Applet加Socket实现网络文件上传性能优于Web方式。

  然而,Applet实现的网络文件上传又并非最优,原因在于Applet在运行时受到沙箱的限制。出于对客户机和服务器的保护,web中的applet程序只能运行在限制的沙箱中,其受到很多安全策略的限制,在applet中不能直接访问客户端本地文件系统,除非使用applet授权,采用数字签名的方式使applet能确认该客户端系统是可信的。这样一来,要使用该功能的客户机系统都需要安装安全证书,在项目的部署上就显得十分繁琐。

  以上方式都各有弊端,也可借助外部的FTP工具,使用开源的文件传输工具让用户将数据文件直接传到服务器指定目录下,在网站系统上就只执行数据文件列表加载。另外,目前也有在web上嵌入FTP功能的插件,其通过activeObject的形式嵌入web,实现类似ftp的文件上传功能。

   更多内容尽在:www.commernet.cn

 

 

 

 

公司简介 - 案例展示 - 联系我们

我们为您提供:软件定制、软件开发、网站建设、IT 外包、系统集成、品牌策划、合肥软件开发等服务
地址:合肥市 高新区 天智路5号 同创科技园5号楼4层   电话:0551-65355812   传真:0551-65355811
版权所有:安徽凯美耐信息技术有限公司    皖ICP备14000533号-1     皖公网安备 34019202000960号