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教程有兴趣的朋友有所帮助。