1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2<html xmlns="http://www.w3.org/1999/xhtml"> 3<head> 4<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5<meta http-equiv="X-UA-Compatible" content="IE=edge"> 6<link href="/smb/css/ui-progress-bar.css" media="screen" rel="stylesheet" type="text/css" /> 7<title></title> 8<style> 9html{ 10margin:0 0; 11padding:0px; 12} 13body{ 14display: block; 15padding:0px; 16margin:0px; 17overflow:hidden; 18} 19#uploadRegion { 20-moz-border-radius: 5px; 21-webkit-border-radius: 5px; 22border-radius: 5px; 23padding: 0px; 24text-align: center; 25font: 20pt bold; 26font-family:"Segoe UI"; 27color: #ffffff; 28left:0px; 29top:0px; 30width:100%; 31height:350px; 32background:#009A95; 33} 34#uploadOption{ 35background-color:#f1f1ef; 36border: #676965; 37border-style:solid; 38border-width:1px; 39height:auto; 40width:100%; 41text-align: left; 42} 43#inputnameRegion{ 44border: 2px #BBB; 45width:100%; 46height:100%; 47background:#d8eaf6; 48} 49#upload_file_list{ 50display: inline; 51font: 12pt bold; 52font-family:"Segoe UI"; 53text-align: left; 54} 55.upload-dropzone-parent { 56height: 100%; 57width: 100%; 58position: relative; 59border-spacing: 20px; 60} 61.drag-drop-supported .upload-dropzone-cell { 62border: #DDD 4px dashed; 63border-radius: 2px; 64} 65.upload-dropzone-cell { 66width: 100%; 67text-align: center; 68position: relative; 69} 70.upload-dropzone { 71width: 100%; 72text-align: center; 73position: relative; 74} 75.upload-drop-here { 76font-weight: bold; 77font-size: 15px; 78color: #fff; 79padding: 0 10px; 80display: none; 81} 82.chrome-require { 83font-weight: bold; 84font-size: 20px; 85padding:10px; 86} 87.chrome-require a{ 88color: #FDC049; 89text-decoration: none; 90} 91.chrome-require a:hover{ 92color: #FDC049; 93text-decoration: underline; 94} 95.upload-drop-alt { 96display: none; 97padding: 15px 0 5px; 98font-weight: bold; 99font-size: 15px; 100color: #fff; 101} 102.upload-select-here, .upload-select-directorys-here{ 103font-weight: bold; 104font-size: 15px; 105color: #fff; 106padding: 0 10px; 107} 108 109#nav { 110width: 100%; 111height: 100%; 112line-height: 2em; 113border: 1px solid #ccc; 114padding: 0; 115margin: 0; 116overflow: scroll; 117overflow-x: hidden; 118} 119li { 120border-top: 1px solid #ccc; 121} 122ul ul { 123text-indent: 1em; 124} 125ul ul ul { 126text-indent: 2em; 127} 128.ml-btn-1 { 129display: inline-block; 130text-decoration: none; 131font-family: "Segoe UI", Helvetica, Arial, sans-serif; 132font-size: 13px; 133font-weight: bold; 134line-height: 240%; 135color:#666; 136text-align: center; 137text-shadow: 0px 1px 0px rgba(255, 255, 255, 0.5); 138background-color: #FBFBFB; 139background-image: -moz-linear-gradient(53% 100% 90deg,#EBEBEB 0%,#FEFEFE 100%); 140background-image: -webkit-gradient(linear,53% 100%,53% 3%,color-stop(0, #EBEBEB),color-stop(1, #FEFEFE)); 141background-image: -webkit-linear-gradient(90deg,#EBEBEB 0%,#FEFEFE 100%); 142background-image: -o-linear-gradient(90deg,#EBEBEB 0%,#FEFEFE 100%); 143background-image: -ms-linear-gradient(90deg,#EBEBEB 0%,#FEFEFE 100%); 144background-image: linear-gradient(90deg,#EBEBEB 0%,#FEFEFE 100%); 145/*width: 120px; 146height: 30px;*/ 147border-color: #B4B4B4; 148border-width: 1px; 149-moz-border-radius: 3px; 150-webkit-border-radius: 3px; 151border-radius: 3px; 152border-style: solid; 153-moz-box-shadow: 0px 0px 0px 3px rgba(0,0,0,0.05) ,inset 0px 1px 0px rgba(255,255,255,0.5); 154-webkit-box-shadow: 0px 0px 0px 3px 155rgba(0, 0, 0, 0.05) ,inset 0px 1px 0px 156rgba(255, 255, 255, 0.5); 157box-shadow: 0px 0px 0px 3px 158rgba(0, 0, 0, 0.05) ,inset 0px 1px 0px 159rgba(255, 255, 255, 0.5); 160-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#fffefefe,endColorstr=#ffebebeb,GradientType=0) progid:DXImageTransform.Microsoft.Glow(Color=#ff000000,Strength=3)"; 161filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fffefefe,endColorstr=#ffebebeb,GradientType=0) progid:DXImageTransform.Microsoft.Glow(Color=#ff000000,Strength=3); 162} 163 164input[type="file"] { 165border: 1px solid #EEE; 166border-radius: 10px; 167padding: 8px; 168font-weight: bold; 169font-size: 15px; 170color: #fff; 171} 172 173div#divApplet{ 174width:100px; 175height:40px; 176} 177</style> 178</head> 179<script type="text/javascript" src="/smb/js/tools.js"></script> 180<script type="text/javascript" src="/smb/js/davclient_tools.js"></script> 181<script type="text/javascript"> 182 183var m = new lang(); 184var g_storage = new myStorage(); 185 186function getUrlVars(){ 187 var vars = [], hash; 188 var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 189 for(var i = 0; i < hashes.length; i++){ 190 hash = hashes[i].split('='); 191 vars.push(hash[0]); 192 vars[hash[0]] = hash[1]; 193 } 194 return vars; 195} 196 197function adjustLayout(){ 198 //alert($("table#main_table").height()); 199 var h = parent.getFileViewHeight(); 200 $("#main_table").css("height", h); 201 $("#uploadRegion").css("height", h-120); 202} 203 204var this_upload_files = new Array(); 205 206$("document").ready(function() { 207 208 var this_upload_index = 0; 209 var this_upload_count = 0; 210 var this_upload_total = 0; 211 //var this_upload_files = new Array(); 212 var this_selected_files = new Array(); 213 var this_url = getUrlVars()["u"]; 214 215 //- show upload option, 0: show all, 1: show upload file, 2:show upload folder 216 var this_upload_option = getUrlVars()["d"]; 217 218 var g_support_html5 = 0; 219 220 var loc_lan = String(window.navigator.userLanguage || window.navigator.language).toLowerCase(); 221 var lan = ( g_storage.get('lan') == undefined ) ? loc_lan : g_storage.get('lan'); 222 m.setLanguage(lan); 223 224 $('.upload-drop-alt').text(m.getString('hint_selfile2')); 225 $('.upload-select-here').text(m.getString('hint_selfile3')); 226 227 if(this_upload_option==0){ 228 $('.select-files').show(); 229 $('.select-directorys').show(); 230 } 231 else if(this_upload_option==1){ 232 $('.select-files').show(); 233 $('.select-directorys').hide(); 234 } 235 else if(this_upload_option==2){ 236 $('.select-files').hide(); 237 $('.select-directorys').show(); 238 } 239 else{ 240 $('.select-files').hide(); 241 $('.select-directorys').hide(); 242 } 243 /* 244 $('.chrome-require').hide(); 245 else{ 246 $('.select-directorys').hide(); 247 $('.chrome-require').show(); 248 $('.upload-drop-here').text(m.getString('hint_selfile1')); 249 $('.upload-support-directorys').text(m.getString('hint_selfile6')); 250 } 251 */ 252 253 $('.upload-drop-here').text(m.getString('hint_selfile1')); 254 $('.upload-support-directorys').text(m.getString('hint_selfile6')); 255 256 $('#upload').text(m.getString('btn_upload')); 257 $('#cancel').text(m.getString('btn_cancel')); 258 259 adjustLayout(); 260 ////////////////////////////////////////////////////////////// 261 262 // Check for the various File API support. 263 if (window.File && window.FileReader && window.FileList && window.Blob) { 264 // Great success! All the File APIs are supported. 265 g_support_html5 = 1; 266 } else { 267 g_support_html5 = 0; 268 } 269 270 var webdav_client = new davlib.DavClient(); 271 webdav_client.initialize(); 272 273 if(g_support_html5==1){ 274 // Setup the dnd listeners. 275 var dropZone = document.getElementById('uploadRegion'); 276 dropZone.addEventListener('dragover', handleDragOver, false); 277 dropZone.addEventListener('drop', handleFileSelect, false); 278 279 $(".upload-drop-here").css("display", "block"); 280 $(".upload-drop-alt").css("display", "block"); 281 } 282 283 if(document.getElementById('files')) 284 document.getElementById('files').addEventListener('change', handleFileSelect, false); 285 286 if(document.getElementById('directorys')) 287 document.getElementById('directorys').addEventListener('change', handleFileSelect, false); 288 289 function webdav_put_callbackfunction(error, content){ 290 291 if(error){ 292 if(error==200||error==201||error==204 ) { 293 if(this_upload_files[this_upload_index].status=="done"){ 294 //alert("file transferred done....call this upload files splice"); 295 this_upload_files.splice(this_upload_index,1); 296 f_offset =0; 297 this_file_loaded_size =0; 298 //this_upload_count++; 299 }else{ 300 //alert("In Progress"); 301 } 302 }/* 303 else if(error==427){ 304 //- If target folder is not exist! 305 306 var path = this_upload_files[this_upload_index].thepath; 307 var openurl = addPathSlash(g_storage.get('openurl')); 308 var this_url = openurl + myencodeURI(path); 309 alert(this_url); 310 webdav_client.MKCOL(this_url, function(error){ 311 this_upload_files[this_upload_index].status = "Init"; 312 uploadFile(); 313 }); 314 315 return; 316 }*/ 317 else if(error==0){ 318 this_upload_files[this_upload_index].status = "UploadFail"; 319 } 320 else{ 321 this_upload_files[this_upload_index].status = "UploadFail"; 322 alert(m.getString(error)); 323 } 324 } 325 else if(content){ 326 alert('content: ' + content); 327 } 328 329 outputUploadResult(); 330 331 //this_upload_count++; 332 if( uploadFile() == 0 ){ 333 showUploadProgress(m.getString('msg_upload_complete'), 100); 334 //g_storage.set('stopLogoutTimer', "0"); 335 //g_storage.set('isOnUploadFile', "0"); 336 stop_upload(); 337 parent.closeUploadPanel(1); 338 } 339 } 340 var this_file_loaded_size = 0; 341 function webdav_put_progress_callbackfunction(evt){ 342 if(evt.lengthComputable) 343 { 344 //this_file_loaded_size = this_file_loaded_size+evt.loaded; 345 var f = this_upload_files[this_upload_index]; 346 //if(this_file_loaded_size/f.thefile.size ==1 ) this_upload_count++; 347 //alert(" this upload count= "+ this_upload_count); 348 var isSegment=0; 349 if(evt.loaded>0 && (evt.loaded/evt.total==1)) { 350 //alert("evt.loaded == evt.total ="+evt.loaded); 351 isSegment =1; 352 } 353 if(isSegment==1) { 354 this_file_loaded_size = this_file_loaded_size+evt.loaded; 355 //alert("segment =1 , loadded size ="+ this_file_loaded_size); 356 } 357 var part1 = 100*(this_upload_count/this_upload_total); 358 var part2 = (this_file_loaded_size/f.thefile.size)*(100/this_upload_total); 359 //var percentComplete = 100*( this_upload_count/this_upload_total) + 360 // (evt.loaded/evt.total)*(100/this_upload_total); 361 var percentComplete = part1+part2; 362 // alert("evt.total = "+ evt.total+ " , filesize = "+f.thefile.size + ", evt.loaded = "+ evt.loaded +", upload_index = "+ this_upload_index+", this uploadsize = "+this_file_loaded_size); 363 // alert("part1 = "+part1+", part2 = "+ part2 ); 364 showUploadProgress(m.getString('msg_upload1') + f.thefile.name + m.getString('msg_upload2') + " " + percentComplete.toFixed(2) + " %", percentComplete); 365 if(this_file_loaded_size/f.thefile.size ==1 ){ 366 //alert("this file loaded size == f.thefile size == "+ this_file_loaded_size); 367 this_upload_count++; 368 } 369 } 370 } 371 372 function webdav_put_progress_callbackfunction_2(evt){ 373 if(evt.lengthComputable) 374 { 375 var percentComplete = 100*(this_upload_count/this_upload_total) + 376 (evt.loaded/evt.total)*(100/this_upload_total); 377 378 var f = this_upload_files[this_upload_index]; 379 380 showUploadProgress(m.getString('msg_upload1') + f.thefile.name + m.getString('msg_upload2') + " " + percentComplete.toFixed(2) + " %", percentComplete); 381 } 382 } 383 384 function readBlob(pfile, opt_startByte, opt_stopByte) { 385 var start = opt_startByte; 386 var stop = opt_stopByte; 387 388 var reader = new FileReader(); 389 var bSliceAsBinary = 0; 390 391 // If we use onloadend, we need to check the readyState. 392 reader.onloadend = function(evt) { 393 if (evt.target.readyState == FileReader.DONE) { // DONE == 2 394 var tURL = this_url + pfile.name; 395 webdav_client.PUT(tURL, evt.target.result, bSliceAsBinary, 396 webdav_put_callbackfunction, webdav_put_progress_callbackfunction ); 397 } 398 }; 399 400 if (pfile.webkitSlice) { 401 var blob = pfile.webkitSlice(start, stop + 1); 402 reader.readAsArrayBuffer(blob); 403 bSliceAsBinary = 1; 404 } 405 else if (pfile.mozSlice) { 406 var blob = pfile.mozSlice(start, stop + 1); 407 reader.readAsBinaryString(blob); 408 bSliceAsBinary = 0; 409 } 410 } 411 /* 412 function requiredFeaturesSupported() { 413 return ( BlobBuilderSupported() && msSaveOrOpenBlobSupported() ); 414 } 415 416 function BlobBuilderSupported() { 417 if (window.BlobBuilder) { 418 // No change needed - the W3C standard API will be used by default. 419 } 420 else if (window.MSBlobBuilder) { 421 window.BlobBuilder = window.MSBlobBuilder; 422 } 423 else if (window.WebKitBlobBuilder) { 424 window.BlobBuilder = window.WebKitBlobBuilder; 425 } 426 else if (window.MozBlobBuilder) { 427 window.BlobBuilder = window.MozBlobBuilder; 428 } 429 else { 430 document.getElementById('bodyElement').innerHTML = "<h1>The BlobBuilder API is not supported - try upgrading your browser to the latest version.</h1>"; 431 return false; 432 } // if-else 433 434 return true; 435 } // BlobBuilderSupported 436 437 function msSaveOrOpenBlobSupported() { 438 if (!window.navigator.msSaveOrOpenBlob) { 439 document.getElementById('bodyElement').innerHTML = "<h1>The msSaveOrOpenBlob API is not supported - try upgrading your version of IE to the latest version.</h1>"; 440 return false; 441 } 442 443 return true; 444 } // msSaveOrOpenBlobSupported 445 */ 446 function PutToWeb(path, pfile, opt_startByte, opt_stopByte, filesize) { 447 var start = opt_startByte; 448 var stop = opt_stopByte; 449 450 var reader = new FileReader(); 451 var bSliceAsBinary = 0; 452 453 // If we use onloadend, we need to check the readyState. 454 reader.onloadend = function(evt) { 455 if (evt.target.readyState == FileReader.DONE) { // DONE == 2 456 var tURL = this_url + path + pfile.name; 457 webdav_client.PUT(tURL, evt.target.result, bSliceAsBinary, start, stop, filesize, "T", 458 webdav_put_callbackfunction, webdav_put_progress_callbackfunction ); 459 } 460 }; 461 462 if (pfile.webkitSlice) { 463 var blob = pfile.webkitSlice(start, stop + 1); 464 reader.readAsArrayBuffer(blob); 465 bSliceAsBinary = 1; 466 } 467 else if (pfile.mozSlice) { 468 var blob = pfile.mozSlice(start, stop + 1); 469 reader.readAsBinaryString(blob); 470 bSliceAsBinary = 0; 471 } 472 else { 473 /* 474 if (requiredFeaturesSupported()) { 475 var builderObject = new BlobBuilder(); // Create a blob builder object so that we can append content to it. 476 477 //builderObject.append("I scream, you scream, we all scream for ice scream."); // Append some content to the builder object. 478 //window.navigator.msSaveBlob(builderObject.getBlob(), 'msSaveBlob_testFile.txt'); // Move the builder object content to a blob and save it to a file - buildObject is now devoid of any content. 479 //alert('File saved using msSaveBlob() - note the single "Save" button below.'); 480 481 var fileData = pfile.slice(start, stop + 1); 482 builderObject.append(fileData); 483 var blob = builderObject.getBlob(); 484 485 // Move the builder object content to a blob and save it to a file - buildObject is now devoid of any content. 486 //window.navigator.msSaveBlob(blob, 'msSaveBlob_testFile.jpg'); 487 488 reader.readAsArrayBuffer(blob); 489 bSliceAsBinary = 1; 490 } 491 */ 492 493 var blob = pfile.slice(start, stop + 1); 494 reader.readAsArrayBuffer(blob); 495 bSliceAsBinary = 1; 496 497 } 498 } 499 500 var f_offset =0; 501 //var segment_size = 5*1024*1024; 502 var segment_size = 50*1024; 503 var loop_cnt =0; 504 function send_segment_data(f, filesize){ 505 var start = f_offset; 506 var stop = start+ segment_size-1; 507 if(stop>= filesize){ 508 stop = filesize - 1; 509 f.status ="done"; 510 } 511 f_offset = stop+1; 512 513 PutToWeb(f.thepath, f.thefile, start, stop, filesize); 514 } 515 516 var current_file_size; 517 function uploadFile(){ 518 for (var i = 0, f; f = this_upload_files[i]; i++) { 519 loop_cnt = Math.ceil(f.thefile.size/segment_size); 520 current_file_size = f.thefile.size; 521 if(f.status=="Init" || f.status=="Upload"){ 522 this_upload_index = i; 523 f.status = "Upload"; 524 send_segment_data(f, f.thefile.size); 525 return 1; 526 } 527 } 528 return 0; 529 } 530 531 document.querySelector('.readBytesButtons').addEventListener('click', function(evt) { 532 533 if (evt.target.tagName.toLowerCase() == 'button') { 534 535 if (!this_upload_files.length) { 536 alert(m.getString('warn_selfile')); 537 return; 538 } 539 540 //$('button#upload').attr("disabled", "disabled"); 541 $('button#upload').hide(); 542 543 this_upload_total = this_upload_files.length; 544 f_offset =0; 545 546 g_storage.set('isOnUploadFile', "1"); 547 g_storage.set('stopLogoutTimer', "1"); 548 uploadFile(); 549 } 550 }, false); 551 552 function outputUploadResult(){ 553 // files is a FileList of File objects. List some properties. 554 var output = []; 555 556 for (var i = 0, f; f = this_upload_files[i]; i++) { 557 /* 558 output.push('<li><strong>', f.thefile.name, '</strong> (', f.thefile.type || 'n/a', ') - ', 559 f.thefile.size, m.getString('upload_item'), m.getString(f.status), '</li>');*/ 560 561 if(g_storage.get('isOnUploadFile')==1) 562 output.push('<li><strong>', f.thepath + f.thefile.name, '</strong> ', ' - ', 563 f.thefile.size, m.getString('upload_item'), ' [ ', m.getString(f.status), ' ] ', '</li>'); 564 else 565 output.push('<li id="', i, '"><strong>', f.thepath + f.thefile.name, '</strong> ', ' - ', 566 f.thefile.size, m.getString('upload_item'), ' [ ', m.getString(f.status), ' ] ', '<button id="delete_item" item="', i, '">X</button></li>'); 567 } 568 569 document.getElementById('upload_file_list').innerHTML = '<ul id="nav">' + output.join('') + '</ul>'; 570 571 $("button#delete_item").click(function(){ 572 var del_item_id = $(this).attr("item"); 573 this_upload_files.splice(del_item_id, 1); 574 outputUploadResult(); 575 }); 576 } 577 578 function showUploadProgress(status, progress_percent){ 579 580 var img = $('#div_upload'); 581 img.css("display", "block"); 582 583 if(progress_percent<=0) 584 $('.ui-label').css("display", "none"); 585 else{ 586 var progressBar = $("#progress_bar"); 587 $(".ui-progress", progressBar).css("width", progress_percent.toFixed(2) + "%"); 588 $('.ui-label').css("display", "block"); 589 $('.ui-label .value').text(status); 590 } 591 } 592 593 function traverseFileTree(item, path) { 594 path = path || ""; 595 if (item.isFile) { 596 // Get file 597 item.file(function(file) { 598 console.log("File:", path + file.name); 599 600 var oObject = new Object(); 601 oObject.status = "Init"; 602 oObject.thepath = path; 603 oObject.thefile = file; 604 this_upload_files.push(oObject); 605 606 outputUploadResult(); 607 }); 608 } 609 else if (item.isDirectory) { 610 // Get folder contents 611 var dirReader = item.createReader(); 612 dirReader.readEntries(function(entries) { 613 for (var i=0; i<entries.length; i++) { 614 traverseFileTree(entries[i], path + item.name + "/"); 615 } 616 }); 617 } 618 } 619 620 function handleFileSelect(evt) { 621 var sel_files; 622 623 if(evt.type=='drop'){ 624 evt.stopPropagation(); 625 evt.preventDefault(); 626 627 //- test 628 if(evt.dataTransfer.items!=undefined){ 629 630 var items = evt.dataTransfer.items; 631 632 if(items.length>0) 633 $("#upload-container").css("display", "none"); 634 635 for (var i=0; i<items.length; i++) { 636 // webkitGetAsEntry is where the magic happens 637 var item = items[i].webkitGetAsEntry(); 638 if (item) { 639 traverseFileTree(item); 640 } 641 } 642 643 return; 644 } 645 else 646 sel_files = evt.dataTransfer.files; // FileList object. 647 } 648 else{ 649 sel_files = evt.target.files; 650 } 651 652 for (var i = 0, s; s = sel_files[i]; i++) { 653 if(s.name=="."||s.name=="..") 654 continue; 655 656 var path = ""; 657 if(s.webkitRelativePath){ 658 path = String(s.webkitRelativePath).replace(s.name,""); 659 } 660 661 var oObject = new Object(); 662 oObject.status = "Init"; 663 oObject.thepath = path; 664 oObject.thefile = s; 665 this_upload_files.push(oObject); 666 } 667 668 $("#upload-container").css("display", "none"); 669 outputUploadResult(); 670 } 671 672 function handleDragOver(evt) { 673 evt.stopPropagation(); 674 evt.preventDefault(); 675 } 676 677 $('button#cancel').click(function(){ 678 if(parent.confirmCancelUploadFile()==0) 679 return; 680 681 parent.closeUploadPanel(); 682 }); 683 684 $(window).resize(adjustLayout); 685 686}); 687 688function get_user_agent(){ 689 return navigator.userAgent; 690} 691 692function get_server_url(){ 693 var openurl = window.location.protocol + "//" + window.location.host + addPathSlash(g_storage.get('openurl')); 694 return openurl; 695} 696 697function stop_upload(){ 698 console.log("stop_upload"); 699 if( this_upload_files && this_upload_files.length > 0 ) 700 this_upload_files.splice(0,this_upload_files.length); 701 702 g_storage.set('stopLogoutTimer', "0"); 703 g_storage.set('isOnUploadFile', "0"); 704} 705</script> 706 707<body> 708 709<table id="main_table" width="100%" height="auto" border="0" align="center" cellpadding="0" cellspacing="0"> 710 <tr> 711 <td> 712 <div id='uploadRegion' style='height:auto'> 713 <table id="upload-container" cellpadding="0" cellspacing="0" class="upload-dropzone-parent drag-drop-supported"> 714 <tbody> 715 <tr> 716 <td class="upload-dropzone-cell"> 717 <table id="drop-zone-label" cellpadding="0" cellspacing="0" class="upload-dropzone"> 718 <tbody> 719 <tr> 720 <td> 721 <div class="upload-drop-here">������������������������</div> 722 <div class="upload-drop-alt">���������������������...</div> 723 <div id="select-files-parent-label" class='select-files'> 724 <span class="upload-select-here">������������������������</span> 725 <input type='file' id='files' multiple/> 726 </div> 727 <div id="select-directorys-parent-label" class='select-directorys'> 728 <span class="upload-select-directorys-here">���������������������������</span> 729 <input type='file' id='directorys' webkitdirectory="" directory=""/> 730 </div> 731 </td> 732 </tr> 733 <!-- 734 <tr> 735 <td> 736 <div id="chrome-require-label" class="chrome-require"> 737 <a href="https://www.google.com/chrome" target="_blank"><span class="upload-support-directorys"></span></a> 738 </div> 739 </td> 740 </tr> 741 --> 742 </tbody> 743 </table> 744 </td> 745 </tr> 746 </tbody> 747 </table> 748 <output id='upload_file_list'></output> 749 </div> 750 </td> 751 </tr> 752 <tr style='height:25px'> 753 <td> 754 <div id='div_upload' style='display:none;width:100%;'> 755 <div class="ui-progress-bar ui-container" id="progress_bar"> 756 <div class="ui-progress" style="width: 0%;"> 757 </div> 758 <span class="ui-label" style="display:none;"> 759 <b class="value">7%</b> 760 </span> 761 </div> 762 </div> 763 </td> 764 </tr> 765 <!--<tr style='height:10px'></tr>--> 766 <tr> 767 <td> 768 <div class="table_block_footer" style="text-align:right"> 769 <button id="upload" class='ml-btn-1 readBytesButtons'>Upload</button> 770 <button id="cancel" class="ml-btn-1 btnStyle">Close</button> 771 </div> 772 </td> 773 </tr> 774</table> 775</body> 776</html> 777