> 백엔드 개발 > PHP 튜토리얼 > HTML5는 중단점에서 대용량 파일 업로드를 재개하는 문제를 해결합니다.

HTML5는 중단점에서 대용량 파일 업로드를 재개하는 문제를 해결합니다.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-07-28 08:26:56
원래의
1030명이 탐색했습니다.

JS 코드

[html] 일반보기 복사 html5解决大文件断点续传 html5解决大文件断点续传

  1. >  
  2. < ;html>  
  3.     <머리>  
  4.        <메타 문자 집합="UTF-8"/>  
  5.        <제목>xhr2제목 >  
  6.     머리>
  7.     <본체>  
  8.         <div  id="drop_area"  스타일="테두리:3px 점선 은색;너비:200px; 높이:200px">div>
  9.   
  10.                   < 진행률 
  11. =
  12. "0" 최대= "10" id="prouploadfile">진행상황>                   <span 
  13. id=
  14. "persent" >0%스팬>          <br />  
  15.                      <
  16. 버튼 onclick=
  17. "stopup()" id="중지">上传버튼>              <스크립트>
  18.         //拖拽上传开始          //-1.禁止浏览器打开文件行为           document.addEventListener("drop",function(e){  //拖离   
  19.            e.preventDefault();      
  20.         })  
  21.         document.addEventListener("dragleave",function(e){  //拖后放   
  22.             e.preventDefault();      
  23.         })  
  24.         document.addEventListener("dragenter",function(e){  //拖进  
  25.             e.preventDefault();      
  26.         })  
  27.         document.addEventListener("dragover",function(e){  //拖来拖去    
  28. > 🎜>        var 
  29. pro
  30.  = 
  31. document
  32. .getElementById('prouploadfile');  
  33.         var persent = document.getElementById('persent');  
  34.         function clearpro(){             pro.value=
  35. 0
  36. ;  
  37.             persent.innerHTML="0%";  
  38.         }                   //2.拖拽  
  39.         var 
  40. 중지 버튼
  41.  = 
  42. 문서
  43. .getElementById('stop');  
  44.                   var 결과 파일=
  45. ""
  46.   
  47.         var box = 문서.getElementById('drop_area') ; //拖拽区域     
  48.         box.addEventListener("drop",function(e){                      var 파일목록  = 
  49. e
  50. .dataTransfer.files;  //获取文件对象    
  51.            console.log(fileList )              //检测是否是拖拽文件到页면적操작                        if(fileList.length
  52.  == 0){              
  53.               거짓 반환           
  54.             }
  55. // 미리보기 기능을 구현할 수 있는 브라우저로 그림을 드래그합니다. //in_array
  56. Array .prototype.S
  57. =문자열
  58. .fromCharCode(2 )  🎜> var r
  59. =new RegExp(this.S+e+this.S ) return (r.test(this.S+this.join(this.S)+this.S))
  60.          } ;                                                                                            ~  🎜>fileurl = .URL.createObjectURL(fileList[0]) ].type.indexOf( 'image') === 0){ //그림인 경우
  61. var
  62. str
  63. =
  64. "< img 너비='200px' 높이='200px' src='"
  65. +fileurl+"'>";
  66. document.getElementById('drop_area')
  67. .innerHTML
  68. =
  69. str
  70. else if(video_type.in_array(fileList[0].type)){ //지정된 형식의 동영상인 경우                                                            varstr=" <동영상 너비='200px' 높이='200px' c/span>+fileurl+"'
  71. >
  72. 동영상>"; drop_area').innerHTML=str;  
  73.    }else{ //기타 형식, 출력 파일 이름                                                        + fileList[0].name 🎜>.innerHTML=str;                                 
  74.  결과파일 = fileList[0]; 
  75. console.log(결과파일);
  76.                                                        사이즈
  77. =
  78. 500*1024; 파일 크기
  79. /setsize;
  80. 진행률 표시줄 정의 pro.max=parseInt
  81. (Math.ceil( 파일 개수)));
  82.                                     🎜>        i =
  83. 쿠키 얻기(resultfile.name);
  84. = (i!=null && i!="")?parseInt(i):0
  85. if(Math.floor(filecount)<i){
  86. Alert(" 이미 완료됨");
  87.                                                                                                                    >
  88.  
  89. persent.innerHTML=
  90. "100%" ;                                                      ~      🎜>pro.value=
  91. i
  92. ; >=parseInt(i)*100/Math.ceil(filecount)
  93.     
  94. persent.innerHTML
  95. =parseInt(p)+"%"; >                                                                ,false);                                                                                                             🎜>
  96. var
  97. 중지=
  98. 1{
  99. if(
  100. 중지
  101. ==1){ false 반환 ;  >> 🎜> 경고("파일을 선택하세요")
  102. return false
  103.                                                                       >  i
  104. =
  105. getCookie
  106. (resultfile.name);
  107.            콘솔. 로그(i)                                                                                                         false 반환
  108.                                                                   
  109. var xhr = new XMLHttpRequest() // 첫 번째 단계
  110.                                                                                          | 🎜 > FormData() //++++++++++
  111.                                                                  🎜>                                         ~ > (파일 개수)                                    >(p)+"%";                            🎜> <<>
  112. if ((Filesize-I*Setsize) & gt;
  113. Setsize) {
  114.  blobfile
  115. = 결과 파일.slice(i*setsize,(i+ 1)*setsize);  else{ >.slice(i*setsize,filesize)        }
  116. formData.append('file', blobfile)
  117. //false 반환
  118.          formData.append('blobname', i); //++++++++++ 
  119.           formData.append('filename', resultfile.name); //++++++++++
  120. //포스트 메소드
  121. xhr.open('POST', 'xhr2 .php'); //두 번째 단계
  122. //요청 보내기
  123. xhr.send(formData) //세 번째 단계
  124.  stopbutton.innerHTML = "일시중지"
  125.                                                                                                                                                                        >(){ //4단계
  126. if ( 상태 == 4 && xhr.status == 200 ) {
  127. console.log(xhr.responseText);            if(i <파일 개수){
  128. >             }else {
  129.                     
  130. ; //시간 초과 설정
  131.  
  132. xhr.timeout
  133. =
  134. 20000
  135. ; 🎜>                                                                         경고(' 요청 시간이 초과되었습니다.低于25K/s');  
  136.               }           
  137.                 
  138.                 i=+1;  
  139.                 setCookie(resultfile.name,i,365)  
  140.                  
  141.         }
  142.           
  143.         //设置cookie  
  144.         함수 setCookie(c_name,value, 만료일)  
  145.         {  
  146.             var exdate=new 날짜 ()  
  147.             exdate.setDate(exdate.getDate()+expiredays)  
  148.            document.cookie =c_name+ "=" +escape(값)+  
  149.             ((만료일==null) ?  "" : ";만료="+exdate.toGMTString()+"; 경로=/")  
  150.         }  
  151.        //获取쿠키  
  152.         함수 getCookie(c_name)  
  153.        {  
  154.         if (document.cookie. 길이>0)  
  155.           {  
  156.          c_start= 문서.cookie.indexOf(c_name + "=")  
  157.           if (c_start!=-1)  
  158.             {   
  159.             c_start=c_start + c_name.길이 +1   
  160.             c_end=문서.cookie.indexOf(";", c_start)  
  161.             if (c_end==-1) c_end=문서.cookie.length  
  162.             return unescape(document.cookie.substring(c_start,c_end))  
  163.             }   
  164.           }  
  165.         반환 ""  
  166.         }  
  167.           
  168.           
  169.         기능 stopup(){  
  170.             if(중지==1){  
  171.                중지 = 0  
  172.                 
  173.                xhr2();  
  174.             }else{  
  175.                중지 = 1  
  176.                stopbutton.innerHTML = "继续"  
  177.                  
  178.             }  
  179.               
  180.         }  
  181.         스크립트>  
  182.     본문>  
  183. html>  

php代码

[ PHP] 일반보기 복사 html5解决大文件断点续传 html5解决大文件断点续传

  1. //$name=$_POST['사용자 이름'];   
  2. $dir=$_POST['파일명'];  
  3. $dir="업로드/".md5($dir);  
  4. file_exists($dir또는 mkdir($dir,0777,true);  
  5.   
  6.   
  7. $path =$dir."/".$_POST[ '블롭 이름'];  
  8.   
  9.   
  10. //print_r($_FILES[" file"]);  
  11. move_uploaded_file($_FILES["file"]["tmp_name"],$path);  
  12.   
  13. if(isset($_POST['라스톤'])){  
  14.     에코 $_POST['라스톤'];  
  15.     $count=$_POST['라스톤 '];  
  16.       
  17.     $fp   = fopen($_POST['파일 이름'],"abw" );  
  18.     for($i=0;$ 나<=$count;$i++){  
  19.         $handle = fopen($dir."/".$i,"rb");    
  20.         fwrite($fp,fread($ 핸들,파일 크기($dir."/".$i)));    
  21.         fclose($handle);      
  22.     }  
  23.     fclose($fp);  
  24. }  
  25.       
  26.       
  27. ?> 

以上就介绍了 html5解决大文件断点续传, 包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿