js大文件分割上传
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
- <head>
- <title>分割大文件上传</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <style>
- #test{
- width: 200px;
- height: 100px;
- border: 1px solid green;
- display: none;
- }
- #img{
- width: 50px;
- height: 50px;
- display: none;
- }
- #upimg{
- text-align: center;
- font: 8px/10px '微软雅黑','黑体',sans-serif;
- width: 300px;
- height: 10px;
- border: 1px solid green;
- }
- #load{
- width: 0%;
- height: 100%;
- background: green;
- text-align: center;
- }
- </style>
- </head>
- <body>
- <form enctype="multipart/form-data" action="file.php" method="post">
- <!--
- <input type="file" name="pic" />
- <div id="img"></div>
- <input type="button" value="uploadimg" onclick="upimg();" /><br />
- -->
- <div id="upimg">
- <div id="load"></div>
- </div>
- <input type="file" name="mof" multiple="multiple"/>
- <input type="button" value="uploadfile" onclick="upfile();" />
- <input type="submit" value="submit" />
- </form>
- <div id="test">
- 测试是否DIV消失
- </div>
- <script type="text/javascript">
- var dom=document.getElementsByTagName('form')[0];
- dom.onsubmit=function(){
- //return false;
- }
- var xhr=new XMLHttpRequest();
- var fd;
- var des=document.getElementById('load');
- var num=document.getElementById('upimg');
- var file;
- const LENGTH=10*1024*1024;
- var start;
- var end;
- var blob;
- var pecent;
- var filename;
- //var pending;
- //var clock;
- function upfile(){
- start=0;
- end=LENGTH+start;
- //pending=false;
- file=document.getElementsByName('mof')[0].files[0];
- //filename = file.name;
- if(!file){
- alert('请选择文件');
- return;
- }
- //clock=setInterval('up()',1000);
- up();
- }
- function up(){
- /*
- if(pending){
- return;
- }
- */
- if(start<file.size){
- xhr.open('POST','file.php',true);
- //xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
- xhr.onreadystatechange=function(){
- if(this.readyState==4){
- if(this.status>=200&&this.status<300){
- if(this.responseText.indexOf('failed') >= 0){
- //alert(this.responseText);
- alert('文件发送失败,请重新发送');
- des.style.width='0%';
- //num.innerHTML='';
- //clearInterval(clock);
- }else{
- //alert(this.responseText)
- // pending=false;
- start=end;
- end=start+LENGTH;
- setTimeout('up()',1000);
- }
- }
- }
- }
- xhr.upload.onprogress=function(ev){
- if(ev.lengthComputable){
- pecent=100*(ev.loaded+start)/file.size;
- if(pecent>100){
- pecent=100;
- }
- //num.innerHTML=parseInt(pecent)+'%';
- des.style.width=pecent+'%';
- des.innerHTML = parseInt(pecent)+'%'
- }
- }
//分割文件核心部分slice- blob=file.slice(start,end);
- fd=new FormData();
- fd.append('mof',blob);
- fd.append('test',file.name);
- //console.log(fd);
- //pending=true;
- xhr.send(fd);
- }else{
- //clearInterval(clock);
- }
- }
- function change(){
- des.style.width='0%';
- }
- </script>
- </body>
- </html>
file.php:
- <?php
- /****
- waited
- ****/
- //print_r($_FILES);exit;
- $file = $_FILES['mof'];
- $type = trim(strrchr($_POST['test'], '.'),'.');
- // print_r($_POST['test']);exit;
- if($file['error']==0){
- if(!file_exists('./upload/upload.'.$type)){
- if(!move_uploaded_file($file['tmp_name'],'./upload/upload.'.$type)){
- echo 'failed';
- }
- }else{
- $content=file_get_contents($file['tmp_name']);
- if (!file_put_contents('./upload/upload.'.$type, $content,FILE_APPEND)) {
- echo 'failed';
- }
- }
- }else{
- echo 'failed';
- }
- ?>
1 运行:
2 选择2G文件测试:
3 完成并正常播放:
js大文件分割上传的更多相关文章
- PHP + JS 实现大文件分割上传
服务器上传文件会有一定的限制.避免内存消耗过大影响性能,在 php.ini 配置文件中,有几个影响参数: upload_max_filesize = 2M //PHP最大能接受的文件大小 post_m ...
- Html5 突破微信限制实现大文件分割上传
先来前端代码 <!DOCTYPE html> <html> <head> <meta name="viewport" content=&q ...
- formdata方式上传文件,支持大文件分割上传
1.upload.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <h ...
- js大文件分块上传断点续传demo
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...
- nodeJs + js 大文件分片上传
简单的文件上传 一.准备文件上传的条件: 1.安装nodejs环境 2.安装vue环境 3.验证环境是否安装成功 二.实现上传步骤 1.前端部分使用 vue-cli 脚手架,搭建一个 demo 版本, ...
- android下大文件分割上传
由于android自身的原因,对大文件(如影视频文件)的操作很容易造成OOM,即:Dalvik堆内存溢出,利用文件分割将大文件分割为小文件可以解决问题. 文件分割后分多次请求服务. //文件分割上传 ...
- PHP大文件分割上传(分片上传)
服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关 upload_max_filesize = 2M //PHP最大能接受的文件大小 post_max_size = 8M //PHP能收 ...
- PHP实现大文件分割上传与分片上传
转载:http://www.zixuephp.com/phpstudy/phpshilie/20170829_43029.html 服务端为什么不能直接传大文件?跟php.ini里面的几个配置有关 u ...
- PHP大文件分片上传的实现方法
一.前言 在网站开发中,经常会有上传文件的需求,有的文件size太大直接上传,经常会导致上传过程中耗时太久,大量占用带宽资源,因此有了分片上传. 分片上传主要是前端将一个较大的文件分成等分的几片,标识 ...
随机推荐
- git设置过滤忽略的文件或文件夹
我们一般向代码仓库提交项目的时候,一般需要忽略编译生成的中间文件以及文件夹的提交,因为它们是无用的,而且也会占用仓库的空间.一般只用提交.pro,.sln,makefile,程序源文件等编译必须用到的 ...
- SRM 601 DIV1
A 枚举x , 然后对于确定的x , 最后总的apple数对应了唯一的orange数,因此问题转化为求apple的取值范围; apple的取值范围: max为每个bag取最多的apple , min为 ...
- zabbix discovery
preface(见面礼): 仅扫tcp端口: netstat -tnlp|egrep -i "$1"
- HDFS文件系统的操作
package com.bank.utils; import java.io.BufferedInputStream;import java.io.BufferedOutputStream;impor ...
- linux部署mongodb及基本操作
原文:http://blog.csdn.net/jinzhencs/article/details/50930877 一.安装部署mongo 1.创建文件夹 /opt/mongodb/single / ...
- SQL Server 系统时间
getdate()函数:取得系统当前的日期和时间.返回值为datetime类型的. 用法:getdate() 例子: select getdate() as dte,dateadd(day,-1,ge ...
- SecureCRT7.3和SecureFX7.3的MAC下破解
破解脚本:http://files.cnblogs.com/files/jieyuefeng/SecureCRTFX_mac_crack.zip 破解方法: sudo perl ~/Downloads ...
- SEO_Alexa排名
1.Alexa排名是评价某一网站访问量的一个指标,对SEO优化没有任何作用,这个数据是可以做假的,考虑Alexa排名纯粹是在浪费时间. 2.Alexa排名是针对已经在浏览器中安装了Alexa Tool ...
- DedeCMS官方手册
DedeCMSV5.3使用手册 DedeCMSV57数据库结构文档 Dedecms 文件目录结构
- Wamp集成环境配置多站点
一.打开apache配置文件httpd.conf 二.修改httpd.conf配置文件 1.在配置文件httpd.conf中搜索 conf/extra/httpd-vhosts.conf,然后将该行代 ...