JS 코드 [html] 일반보기 복사 > < ;html> <머리> <메타 문자 집합="UTF-8"/> <제목>xhr2제목 > 머리> <본체> <div id="drop_area" 스타일="테두리:3px 점선 은색;너비:200px; 높이:200px">div> < 진행률 값="0" 최대= "10" id="prouploadfile">진행상황> <span id="persent" >0%스팬> <br /> < 버튼 onclick="stopup()" id="중지">上传버튼> <스크립트> //拖拽上传开始 //-1.禁止浏览器打开文件行为 document.addEventListener("drop",function(e){ //拖离 e.preventDefault(); }) document.addEventListener("dragleave",function(e){ //拖后放 e.preventDefault(); }) document.addEventListener("dragenter",function(e){ //拖进 e.preventDefault(); }) document.addEventListener("dragover",function(e){ //拖来拖去 > 🎜> var pro = document.getElementById('prouploadfile'); var persent = document.getElementById('persent'); function clearpro(){ pro.value=0; persent.innerHTML="0%"; } //2.拖拽 var 중지 버튼 = 문서.getElementById('stop'); var 결과 파일="" var box = 문서.getElementById('drop_area') ; //拖拽区域 box.addEventListener("drop",function(e){ var 파일목록 = e.dataTransfer.files; //获取文件对象 console.log(fileList ) //检测是否是拖拽文件到页면적操작 if(fileList.length == 0){ 거짓 반환 } // 미리보기 기능을 구현할 수 있는 브라우저로 그림을 드래그합니다. //in_array Array .prototype.S =문자열 .fromCharCode(2 ) 🎜> var r =new RegExp(this.S+e+this.S ) return (r.test(this.S+this.join(this.S)+this.S)) } ; ~ 🎜>fileurl = 창.URL.createObjectURL(fileList[0]) ].type.indexOf( 'image') === 0){ //그림인 경우 var str="< img 너비='200px' 높이='200px' src='"+fileurl+"'>"; document.getElementById('drop_area').innerHTML=str else if(video_type.in_array(fileList[0].type)){ //지정된 형식의 동영상인 경우 varstr=" <동영상 너비='200px' 높이='200px' c/span>+fileurl+"'>동영상>"; drop_area').innerHTML=str; }else{ //기타 형식, 출력 파일 이름 + fileList[0].name 🎜>.innerHTML=str; 결과파일 = fileList[0]; console.log(결과파일); 사이즈= 500*1024; 파일 크기/setsize; 진행률 표시줄 정의 pro.max=parseInt (Math.ceil( 파일 개수))); 🎜> i = 쿠키 얻기(resultfile.name); = (i!=null && i!="")?parseInt(i):0 if(Math.floor(filecount)<i){ Alert(" 이미 완료됨"); > persent.innerHTML="100%" ; ~ 🎜>pro.value=i; >=parseInt(i)*100/Math.ceil(filecount) persent.innerHTML=parseInt(p)+"%"; > ,false); 🎜> var 중지=1{ if(중지==1){ false 반환 ; >> 🎜> 경고("파일을 선택하세요") return false > i=getCookie(resultfile.name); 콘솔. 로그(i) false 반환 var xhr = new XMLHttpRequest() // 첫 번째 단계 | 🎜 > FormData() //++++++++++ 🎜> ~ > (파일 개수) >(p)+"%"; 🎜> <<> if ((Filesize-I*Setsize) & gt; Setsize) { blobfile= 결과 파일.slice(i*setsize,(i+ 1)*setsize); else{ >.slice(i*setsize,filesize) } formData.append('file', blobfile) //false 반환 formData.append('blobname', i); //++++++++++ formData.append('filename', resultfile.name); //++++++++++ //포스트 메소드 xhr.open('POST', 'xhr2 .php'); //두 번째 단계 //요청 보내기 xhr.send(formData) //세 번째 단계 stopbutton.innerHTML = "일시중지" >(){ //4단계 if ( 상태 == 4 && xhr.status == 200 ) { console.log(xhr.responseText); if(i <파일 개수){ > }else { ; //시간 초과 설정 xhr.timeout = 20000 ; 🎜> 경고(' 요청 시간이 초과되었습니다.低于25K/s'); } i=나+1; setCookie(resultfile.name,i,365) } //设置cookie 함수 setCookie(c_name,value, 만료일) { var exdate=new 날짜 () exdate.setDate(exdate.getDate()+expiredays) document.cookie =c_name+ "=" +escape(값)+ ((만료일==null) ? "" : ";만료="+exdate.toGMTString()+"; 경로=/") } //获取쿠키 함수 getCookie(c_name) { if (document.cookie. 길이>0) { c_start= 문서.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.길이 +1 c_end=문서.cookie.indexOf(";", c_start) if (c_end==-1) c_end=문서.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } 반환 "" } 기능 stopup(){ if(중지==1){ 중지 = 0 xhr2(); }else{ 중지 = 1 stopbutton.innerHTML = "继续" } } 스크립트> 본문> html> php代码 [ PHP] 일반보기 복사 //$name=$_POST['사용자 이름']; $dir=$_POST['파일명']; $dir="업로드/".md5($dir); file_exists($dir) 또는 mkdir($dir,0777,true); $path =$dir."/".$_POST[ '블롭 이름']; //print_r($_FILES[" file"]); move_uploaded_file($_FILES["file"]["tmp_name"],$path); if(isset($_POST['라스톤'])){ 에코 $_POST['라스톤']; $count=$_POST['라스톤 ']; $fp = fopen($_POST['파일 이름'],"abw" ); for($i=0;$ 나<=$count;$i++){ $handle = fopen($dir."/".$i,"rb"); fwrite($fp,fread($ 핸들,파일 크기($dir."/".$i))); fclose($handle); } fclose($fp); } ?> 以上就介绍了 html5解决大文件断点续传, 包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。