upgrade_iso.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. <?php
  2. ini_set('error_reporting', E_ALL | E_STRICT);
  3. $tag_header = 'upgrade';
  4. include 'head.php';
  5. ?>
  6. <style>
  7. img {
  8. display: block;
  9. margin-left: auto;
  10. margin-right: auto;
  11. }
  12. </style>
  13. <div class="envor-content">
  14. <!--
  15. Page Title start
  16. //-->
  17. <section class="envor-page-title-1" data-stellar-background-ratio="0.5">
  18. <div class="container">
  19. <div class="row">
  20. <div class="col-lg-9 col-md-9 col-sm-9">
  21. <h1><?php echo $lang->showWord("upgrade"); ?></h1>
  22. </div>
  23. </div>
  24. </div>
  25. <!--
  26. Page Title end
  27. //-->
  28. </section>
  29. <!--
  30. Main Content start
  31. //-->
  32. <a id="loadinghref"><div id="loading" style="display:none;"><img src="img/giphy.gif"/></div></a>
  33. <div id="loading2" style="display:none;"><img id="5minutes" src="img/5minutes.gif"/></div>
  34. <section class="envor-section">
  35. <div class="container">
  36. <div class="row">
  37. <div class="col-lg-12">
  38. <h2>Image <?php echo $lang->showWord("upgrade");?></h2>
  39. <div class="file-loading">
  40. <input name="file_iso" id="file_iso" type="file" class="file" data-show-preview="false" data-show-upload="false" <?php //data-allowed-file-extensions='["iso"]' ?>>
  41. </div>
  42. <?php /* <input type="submit" class="btn btn-primary" id="upload_iso"></button>
  43. <input type="reset" class="btn btn-outline-secondary"></button>*/?>
  44. <article class="envor-sorting-item css">
  45. <div align="center"><button id="upload_iso"><?php echo $lang->showWord("set")?></button></div>
  46. </article>
  47. </div>
  48. <div class="col-lg-12">
  49. <h2><?php echo $lang->showWord("upgrade_status");?></h2>
  50. <!-- <textarea id="description" rows="2" class="form-control" placeholder=""></textarea>-->
  51. <p id="createResult"></p>
  52. </div>
  53. </div>
  54. </div>
  55. <!--
  56. Main Content start
  57. //-->
  58. </section>
  59. </div>
  60. <?php
  61. include 'foot.php';
  62. ?>
  63. <script type="text/JavaScript">
  64. document.getElementById("upload_iso").onclick = function() {
  65. if(formCheck("iso"))
  66. {
  67. window.location="#loadinghref";
  68. document.getElementById("loading").style.display="block";
  69. var fileInput = document.getElementById('file_iso');
  70. // 發送 Ajax 查詢請求並處理
  71. var request = new XMLHttpRequest();
  72. request.open("POST", "upgrade_iso_action.php");
  73. // POST 參數須使用 send() 發送
  74. var formData = new FormData();
  75. //var formData = new FormData(document.getElementById("file_iso"));
  76. var file = fileInput.files[0];
  77. formData.append("fw_tag", "iso");
  78. formData.append("files[]", file);
  79. // POST 請求必須設置表頭在 open() 下面,send() 上面
  80. request.upload.onprogress = function(e) {
  81. document.getElementById("createResult").innerHTML = "Upload " + (Math.round( (e.loaded/e.total) *10000)/100) + "%";
  82. }
  83. request.send(formData);
  84. request.onreadystatechange = function() {
  85. // 伺服器請求完成
  86. if (request.readyState == 4) {
  87. document.getElementById("loading").style.display="none";
  88. // 伺服器回應成功
  89. if (request.status == 200) {
  90. document.getElementById("createResult").innerHTML = "";
  91. document.getElementById("createResult").innerHTML = request.responseText;
  92. document.getElementById("5minutes").src = "";
  93. document.getElementById("5minutes").src = "img/5minutes.gif";
  94. document.getElementById("loading2").style.display="block";
  95. var ts = 4*60*1000;
  96. var idx=0;
  97. var x = setInterval(function() {
  98. idx++;
  99. var t=ts-1000*idx;
  100. if (t < 0) {
  101. clearInterval(x);
  102. document.getElementById("createResult").innerHTML = "<font color='#ff0000'>Upgrade done!</font>";
  103. document.getElementById("loading2").style.display="none";
  104. //location.href="upgrade_iso.php";
  105. }
  106. }, 1000);
  107. var cnt=0;
  108. //location.href="upgrade_iso.php";
  109. setInterval(function(){
  110. var result=serverReachable();
  111. if(!result) cnt=1;
  112. if(result && cnt>=1) cnt++;
  113. if(cnt>=2) {
  114. document.getElementById("createResult").innerHTML = "<font color='#ff0000'>Upgrade done!</font>";
  115. document.getElementById("loading2").style.display="none";
  116. cnt=0;
  117. }
  118. },3000);
  119. } else {
  120. alert(JSON.parse(request.responseText).message);
  121. }
  122. request = null;
  123. }
  124. else{
  125. document.getElementById("createResult").innerHTML = request.responseText;
  126. }
  127. }
  128. }
  129. }
  130. function formCheck(fw_tag)
  131. {
  132. var file_type;
  133. if(fw_tag=="iso")
  134. {
  135. if(document.getElementById("file_iso").value.substring(document.getElementById("file_iso").value.length-3) != "hex")
  136. {
  137. // alert("Firmware file type is wrong, please check file type.(*.hex)");
  138. // document.getElementById("file_iso").focus();
  139. // return false;
  140. }
  141. if(document.getElementById("file_iso").value.length <= 0)
  142. {
  143. alert("Firmware is not select, please check!");
  144. document.getElementById("file_iso").focus();
  145. return false;
  146. }
  147. // if(confirm("Are you sure to update AC MCU firmware file now?...") == 1 )
  148. return true;
  149. // else
  150. // return false;
  151. }
  152. else
  153. return false;
  154. }
  155. function isNumberKey(evt)
  156. {
  157. var charCode = (evt.which) ? evt.which : event.keyCode
  158. if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode != 46))
  159. return false;
  160. return true;
  161. }
  162. function serverReachable() {
  163. // IE vs. standard XHR creation
  164. var x = new ( window.ActiveXObject || XMLHttpRequest )( "Microsoft.XMLHTTP" ),
  165. s;
  166. x.open(
  167. // requesting the headers is faster, and just enough
  168. "HEAD",
  169. // append a random string to the current hostname,
  170. // to make sure we're not hitting the cache
  171. "//" + window.location.hostname + "/?rand=" + Math.random(),
  172. // make a synchronous request
  173. false
  174. );
  175. try {
  176. x.send();
  177. s = x.status;
  178. // Make sure the server is reachable
  179. return ( s >= 200 && s < 300 || s === 304 );
  180. // catch network & other problems
  181. } catch (e) {
  182. return false;
  183. }
  184. }
  185. </script>