js實現分割上傳大檔案,js分割上傳

來源:互聯網
上載者:User

js實現分割上傳大檔案,js分割上傳

本文執行個體介紹了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 完成並正常播放:

以上就是本文的全部內容,希望對大家的學習有所協助。

您可能感興趣的文章:
  • JSP上傳檔案到指定位置執行個體代碼
  • file控制項選擇上傳檔案確定後觸發的js事件是哪個
  • js擷取上傳檔案大小範例程式碼
  • js判斷上傳檔案類型判斷FileUpload檔案類型代碼
  • 一個簡單的jQuery外掛程式ajaxfileupload.js實現ajax上傳檔案例子
  • 使用ajaxfileupload.js實現ajax上傳檔案php版
  • nodejs 實現類比form表單上傳檔案
  • javascript實現限制上傳檔案大小
  • JavaScript檢測上傳檔案大小的方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.