js實(shí)現(xiàn)分割上傳大文件
本文實(shí)例介紹了js上傳文件操作,分享給大家供大家參考,具體內(nèi)容如下
<!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('文件發(fā)送失敗,請重新發(fā)送'); 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 運(yùn)行:
2 選擇2G文件測試:
3 完成并正常播放:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
相關(guān)文章
Javascript實(shí)現(xiàn)飛動廣告效果的方法
這篇文章主要介紹了Javascript實(shí)現(xiàn)飛動廣告效果的方法,可實(shí)現(xiàn)廣告窗口的浮動顯示效果,且廣告窗口具有關(guān)閉功能,需要的朋友可以參考下2015-05-05firefox瀏覽器下javascript 拖動層效果與原理分析代碼
這篇文章主要給大家介紹了關(guān)于在firefox瀏覽器下如何利用javascript實(shí)現(xiàn)拖動層效果,以及其中的原理分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,下面來一起看看吧2007-12-12前端常見的時間轉(zhuǎn)換方法以及獲取當(dāng)前時間方法小結(jié)
在做開發(fā)時會對不同的時間格式進(jìn)行轉(zhuǎn)換,下面這篇文章主要給大家介紹了關(guān)于前端常見的時間轉(zhuǎn)換方法以及獲取當(dāng)前時間方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01基于JavaScript實(shí)現(xiàn)滑動門效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)滑動門效果的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03給easyui datebox擴(kuò)展一個清空的實(shí)例
下面小編就為大家?guī)硪黄oeasyui datebox擴(kuò)展一個清空按鈕的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-11-11JavaScript talbe表中指定位置插入一行的實(shí)現(xiàn)代碼 腳本之家修正版
用js實(shí)現(xiàn)的在table中指定的位置插入一行,先點(diǎn)一下表中你想插入的位置,點(diǎn)擊即可。2009-06-06