PHP+JS+HTML5+Flash网页上传超大文件的解决方案

原创 2015年11月18日 23:44:29

所有Web程序猿都有过通过网页上传文件到服务器的经历,上传小文件是十分简单的。当你上传的文件大小逐渐变大的时候,就会遇到第一个问题:


1.PHP上传文件的大小是有限制的,默认是2M,即使你改大了,也是治标不治本。而且,当文件上升到GB级别的时候,就不单单只是PHP的问题了,你服务器的内存也会被吃光。


2.用传统的提交表单的方式上传大文件,进度显示不友好。


3.如果用户上传的文件,你服务器上本来就有,难道还让用户再传一遍?


为了解决以上的三个问题,分别有对应的方法:

1.当用户在浏览器里选择文件后,如果文件大小超出限制,立马将文件切片,分片上传。

2.利用flash或者html5来展示上传进度条。

3.上传前就在本地做HASH,通过和服务器的比对,确定该文件是否要上传。


其中,HTML5和Flash是二选一的,因为不同品牌,不同时代的浏览器的兼容性,通常会两者齐用。优先考虑Html5。

代码实现的过程中,有几个难点,一个是大文件的分片上传。这个是用JS来实现的。原来和我们平常所说的断点续传类似。就是每次传一部分,把长度或者开头和结尾一起传上去。另一个是文件的HASH验证,这个你就别指望用现成的代码了,因为Hash是很耗费资源的,试想一下,如果你要用JS把一个2G的文件Hash一遍,将用时多久?所以通常都是自己写算法验证的。思路是分段MD5验证,避免全文MD5。


下面开始提供解决方案:

百度前端团队开源了一款网页上传插件,名字叫Webuploader,完美解决了上述问题。开源链接

版权声明:本文为博主原创文章,未经博主允许不得转载。联系邮箱longge93@cliyun.com

相关文章推荐

[php] 3个多文件上传(uploadify、file upload、 webuploader)

多文件上传的插件常用的有: 1、jquery uploadify  下载【http://www.uploadify.com/download/】 2、jquery file upload 下载【htt...

微信小程序登录逻辑整理

官方文档文档相关地址:用户登录 获取用户数据 用户数据的签名验证和加解密微信两个api所拿到的信息:login和getUserInfo注册/登录小程序端:通过上面wx.login和wx.getUs...

js分片上传大文件,前端代码,亲测ok

首先得导入jquery.form.js文件,下面src是相对于改js文件位置, src="jquery/jquery-form.js"> var BYTES_PER_CHUNK = 1024 ...

使用PHP实现文件上传

这里使用PHP实现文件的上传,由在浏览器这边选择文件,上传到服务器。其中,在上传文件中,考虑到对上传文件大小的限制、类型限制等问题。(当然可以根据我们需要修改对上传的文件的限制,而一般而言php自身也...

居于H5的多文件、大文件、多线程上传解决方案

H5 大文件 多文件 多线程

Web多文件大文件上传组件比较之一二三

WEB大文件上传几个组件了解 (转自:http://www.cnblogs.com/yjmyzz/archive/2010/03/19/1689996.html)   1.swfup...

webuploader 实现大文件 分片上传

webuploader 分片上传文件最近研究了下大文件上传的方法,找到了webuploader js 插件进行大文件上传。使用 使用webuploader分成简单直选要引入 <script typ...

分片上传(断点续上传)原理

分片上传(断点续上传) 分片上传功能支持将一个文件切割为一系列特定大小的小数据片,分别将这些小数据片分别上传到服务端,全部上传完后再在服务端将这些小数据片合并成为一个资源。上传模型中对分片上传的特点...
  • itaper
  • itaper
  • 2016-12-14 16:22
  • 1336
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)