참고 : Ajax로 업로드하면 파일이 너무 커질 수 없습니다. 과도한 연속 AJAX 요청이 배경이 무너지고 INPUTStream의 데이터가 비어 있기 때문에 특히 Google에서는 Google에서 특히 Google이 비어 있기 때문에 3 ~ 400 조 미만의 것이 가장 좋습니다. 브라우저 테스트.
1. 간단한 세그먼트 읽기 파일은 블로브, 서버에 Ajax 업로드입니다.
<div class = container> <div class = panel panel-default> <div class = panel-heading> 파일 읽기 : < / div> <div class = panel-body> <입력 유형 = file id = file /> <blockquote Style = Word-Break : break-all;> </blockquote> </div> </div> </div>
JS :
/** 세그먼트 화 파일은 Blobs이며 서버에 업로드* exe 파일을 AJAX로 업로드합니다. var reader = 1024 * 1024; ; // 성공적인 reader.onload = function (e) {// 읽기 결과를 처리합니다. {console.info ( '로드 :' + culoaded + 'current : // culoaded + = loaded <readblob (copoaded); '총 :' + 날짜 () - starttime.gettime ()) / 1000); // 시작 위치를 지정하십시오. 파일을 지정하십시오 (blob);} // 읽기 시작 (0); Server var formdata (); '파일', 'Filename', fd.append ( 'loaded'); xhr.open ( 'post', '../ashx/upload2.ashx', true); var data = eval ( ' + xhr.responseText +');
배경 코드 :
/// upload2 요약 지침 /// </summary> public class upload2 : ihttphandler = 컨텍스트; / httprequest repk = _context.request; // 매개 변수 ext = req.form [filename]; .Toint32 (REAGED). _file.inputStream; ) ;; newName.append, fileAccess.write, 1024); Writeline (TotalCount + DataOne.length) .tring ()); 진실을 반환하십시오;}}
2. 섹션의 파일을 Blob의 파일을 읽고 Ajax를 사용하여 서버에 업로드하십시오.
<div class = container> <div class = panel panel-default> <div class = panel-heading> 파일 읽기 : < / div> <div class = panel-body> <입력 유형 = file id = file /> <br /> <버튼 값 = stop (); /progress> <blockquote id = status style = word-break : break-all;> </blockquote> </div> </div>
JS :
/** 세그먼트 화 파일은 Ajax를 사용하여 서버에 업로드하여 업로드하는 것이 가장 좋습니다. Long Connection */var filebox = getElementByid ( 'file'). null; var starttime = 새로운 filead errand (); E.LOADED; enableread == false) false를 반환합니다. -Current : ' +로드); // 如果没有读完 继续 + = If (culoaded <total) {readblob (conloaded); ). value = %;});} // 읽기 시작 (0); fd.append (파일), fd.name (filename); post ','../ashx/upload2.ashx ', true); (xhr.status == 500) {//console.info ( 'request error,' + xhr.responsetext); }} // 시작 위치를 지정하고 파일 함수를 읽습니다. readblob (start) {// 시작 위치와 끝 위치를 지정하고 파일 var blob = file.slice (start, start + step); );} // 함수 중단 stop () {// console.info ( 'stop, culoaded :' + cupoaded); 계속, ' + culoaded);
위의 배경 코드
3. 섹션의 파일을 바이너리 배열로 읽고 Ajax를 사용하여 서버에 업로드합니다.
이진 배열 사용은 특히 낮으며 최종 파일은 원래 크기로 약간 벗어납니다.
HTML 컨텐츠는 위와 동일합니다
JS :
/** SEG 세그먼트 판독 파일은 이진 배열이며, 이진 배열을 사용하여 전송하는 방법을 사용하기 위해 AJAX에 의해 서버에 업로드됩니다. = getElementById ( '파일'); var veh = null을 읽습니다. // 값이 여러 번 지정되면 데이터가 손실됩니다 새 날짜 (). / 서버 업로드 파일에 세그먼트 데이터를 업로드하십시오 (결과, cipoad ed, function () {console.info ( '로드 :' + culoaded + '---- 전류 :' +로드); // 완료되지 않은 경우 culoaded +를 계속하십시오. =로드; if culoaded <total) {oaded);} else {console.log ( '총 시간 :' + (새 날짜 () - starttime.gettime ()) /1000; } // results progress = (culoaded / total) * getElementById ( 'status'); 읽기 Server var fd (); xhren ( 'post', '../as. {// console.info (xhr.responsetext); if (onsuccess) else (xhr.status == 500) {console.info ( 'server error'); / xhr.send (fd);}}} // 시작 위치를 지정하십시오 , ' + cupoaded);
배경 코드 :
// <summary> /// upload3 추상 지침 /// </summary> public class upload3 : ihttphandler {loghelper_log = new loghelper.loghelper (httpcontext); = 컨텍스트; / 수신 httprequest repk = _context.request; (q)). toArray (); ','). select (q => int.parse (q)). INT 유형은 1.99999999999996774G int loaded = req.form [loaded]입니다. newname += filename; fs.Write (dataOne, 0, dataOne.length);} 최종적으로 {fs.close ();} _log.writeLeline); Writest (String Str) {httpcontext.response.write (str);} public bool isre useable {get {return false;}}}요약
위는 HTML5 파일 도메인+파일을 읽고 서버에 업로드했습니다. VEVB WULIN 웹 사이트를 지원해 주셔서 대단히 감사합니다!