本文实例介绍了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 完成并正常播放:
以上就是本文的全部内容,希望对大家的学习有所帮助。
本文地址:https://www.stayed.cn/item/11746
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我