From 7e4bf448e3a78e3b7690232a2bf2bfc03849ff62 Mon Sep 17 00:00:00 2001 From: qkqpttgf <45693631+qkqpttgf@users.noreply.github.com> Date: Thu, 3 Jun 2021 14:28:00 +0800 Subject: [PATCH] fix: guest upload >5 files. change: chunk size change with speed, operate box in middle. --- theme/classic.html | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/theme/classic.html b/theme/classic.html index 6bd9f8c..93912e9 100644 --- a/theme/classic.html +++ b/theme/classic.html @@ -941,7 +941,9 @@ } else { filemd5 = spark.end(); td2.innerHTML='md5: '+filemd5; + delete uploading[upbigfilename]; upbigfilename = filemd5+ext; + uploading[upbigfilename] = i; td2.innerHTML=' ...'; var xhr1 = new XMLHttpRequest(); @@ -1005,6 +1007,7 @@ var newstartsize = 0; if(!!file){ var asize=0; + var chunksize=10*1024*1024; // chunk size, max 60M. 每小块上传大小,最大60M,微软建议10M var totalsize=file.size; var xhr2 = new XMLHttpRequest(); xhr2.open("GET", url); @@ -1022,8 +1025,6 @@ } else { StartStr=''+size_format(newstartsize)+ '
:' +StartTime.toLocaleString()+'
' ; } - var chunksize=5*1024*1024; // chunk size, max 60M. 每小块上传大小,最大60M,微软建议10M - if (totalsize>200*1024*1024) chunksize=10*1024*1024; function readblob(start) { var end=start+chunksize; var blob = file.slice(start,end); @@ -1033,6 +1034,7 @@ reader.onload = function(e){ var binary = this.result; + var lastCurrentSpeed; var xhr = new XMLHttpRequest(); xhr.open("PUT", url, true); //xhr.setRequestHeader('x-requested-with','XMLHttpRequest'); @@ -1040,9 +1042,10 @@ xhr.setRequestHeader('Content-Range', 'bytes ' + asize + '-' + bsize +'/'+ totalsize); xhr.upload.onprogress = function(e){ if (e.lengthComputable) { - var tmptime = new Date(); - var tmpspeed = e.loaded*1000/(tmptime.getTime()-C_starttime.getTime()); - var remaintime = (totalsize-asize-e.loaded)/tmpspeed; + let tmptime = new Date(); + let tmpspeed = e.loaded*1000/(tmptime.getTime()-C_starttime.getTime()); + lastCurrentSpeed = tmpspeed; + let remaintime = (totalsize-asize-e.loaded)/tmpspeed; label.innerHTML=StartStr+' ' +size_format(asize+e.loaded)+ ' / '+size_format(totalsize) + ' = ' + ((asize+e.loaded)*100/totalsize).toFixed(2) + '% :'+size_format((asize+e.loaded-newstartsize)*1000/(tmptime.getTime()-StartTime.getTime()))+'/s
'+size_format(tmpspeed)+'/s '+seconds2hour(remaintime.toFixed(1)); } } @@ -1086,6 +1089,9 @@ } else { var a=response['nextExpectedRanges'][0]; asize=Number( a.slice(0,a.indexOf("-")) ); + chunksize = 10*1024*1024; + if (lastCurrentSpeed>5*1024*1024) chunksize = 20*1024*1024; + if (lastCurrentSpeed>10*1024*1024) chunksize = 50*1024*1024; readblob(asize); } } } else readblob(asize); @@ -1158,7 +1164,6 @@ uploading[upbigfilename] = [i]; var spark = sha1.create(); var reader = new FileReader(); - var chunksize=10*1024*1024; var asize = 0; var filesha1; function readblob(start) { @@ -1479,15 +1484,15 @@ document.getElementById(action + '_fileid').value=fileid; document.getElementById(action + '_hidden').value=str; if (action=='rename') document.getElementById(action + '_input').value=str; - var $e = event || window.event; - var $scrollX = document.documentElement.scrollLeft || document.body.scrollLeft; + /*var $e = event || window.event; + var $scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;*/ var $scrollY = document.documentElement.scrollTop || document.body.scrollTop; - var $x = $e.pageX || $e.clientX + $scrollX; + /*var $x = $e.pageX || $e.clientX + $scrollX; var $y = $e.pageY || $e.clientY + $scrollY; - if (action=='create') { + if (action=='create') {*/ document.getElementById(action + '_div').style.left=(document.body.clientWidth-document.getElementById(action + '_div').offsetWidth)/2 +'px'; document.getElementById(action + '_div').style.top=(window.innerHeight-document.getElementById(action + '_div').offsetHeight)/2+$scrollY +'px'; - } else { + /*} else { if ($x + document.getElementById(action + '_div').offsetWidth > document.body.clientWidth) { if (document.getElementById(action + '_div').offsetWidth > document.body.clientWidth) { document.getElementById(action + '_div').offsetWidth=document.body.clientWidth+'px'; @@ -1499,7 +1504,7 @@ document.getElementById(action + '_div').style.left=$x+'px'; } document.getElementById(action + '_div').style.top=$y+'px'; - } + }*/ document.getElementById(action + '_input').focus(); } function submit_operate(str) {