网页分块上传文件
来源:互联网 发布:火炮分类 知乎 编辑:程序博客网 时间:2024/04/28 10:23
之前工作中没有遇到过上传大文件的需求,因此今天抽时间研究了一下如何分块传输文件。这个demo很简单,大致明白原理就行了。
demo的环境:PHP5.5 + nginx
上传的文件为一张照片:2.3M 每次最多上传1M,大概要循环3次
1.nginx配置,为了提高处理性能,我们需要加大nginx的buffer
large_client_header_buffers 4 64K;//cookie等值比较大的时候需要扩大这个缓冲区client_body_buffer_size 2M;//如果这个值小于上传的数据,则nginx会把数据写道临时文件,增加了额外的IOclient_max_body_size 2M;
2.同时检查PHP的配置
file_uploads Onupload_max_filesize 2M
今天写的部分是html5中有个FormData属性下面直接贴代码:
<div class="Main"> <div class="header">header</div> <div> <input type="file" name="userfile" id="userfile" /> <input type="button" name="button" id="submit" value="上传视屏"/> </div></div>
<script type="text/javascript"> var sub = document.getElementById("submit"); sub.onclick=function(){ var file= document.getElementById("userfile").files[0]; if (file == undefined) { alert("请上传文件"); return false; } var each_chunck = 1024*1024; var start = end = 0; while(end < file.size) { end = start + each_chunck; data = file.slice(start, end); var fd = new FormData(); fd.append('name', data); var xhr = new XMLHttpRequest(); xhr.open('POST','/upload/updata',false); xhr.send(fd); start = end; } }</script>
//对于PHP接收数据就按照平时的$_FILES接收就好了,如上我们获取临时文件名 $_FILES['name']['tmp_name']; //对于接收的文件,我们试验的时候就是往一个文件追加内容就行了,当多机器环境下就需要使用分布式存储文件存储了。以后研究。
/* *下次就抽时间研究一下分布式文件和iframe分块上传文件吧。 */
0 0
- 网页分块上传文件
- 分块上传大文件
- Http文件分块上传
- h5文件分块上传
- 利用 xmlhttp 分块上传文件
- 利用Xmlhttp 分块上传文件
- IHttpModule 分块上传大文件
- IHttpModule 分块上传大文件
- IHttpModule 分块上传大文件
- IHttpModule 分块上传大文件
- asp.net 分块上传文件
- 文件分块上传客户端实现
- 大文件分块上传,断点续传
- 大文件分块上传第三弹(分块并发上传)
- Silverlight 上传 大文件分块上传
- Java 文件分块上传客户端源代码
- Java 文件分块上传服务器端源代码
- Java 文件分块上传服务器端源代码
- 04-java
- SQL 事务提交
- Codeforces 742B
- 运行junit测试报javax/servlet/ServletContext : Unsupported major.minor version 51.0错误
- css引入方式
- 网页分块上传文件
- 分析一个游戏脚本框架
- 游戏开发心悟
- crtmpserver流媒体服务器的介绍与搭建
- 理解B+树算法和Innodb索引
- 详细解析Java中抽象类和接口的区别
- 寒假01:<分解质因数>、<完美代价>、<数的读法>
- Maven入门指南⑤:使用Nexus搭建Maven私服
- BZOJ1861: [Zjoi2006]Book 书架