index.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>报告模板上传</title>
  6. <script src="js/jquery.min.js"></script>
  7. <style>
  8. html,
  9. body {
  10. height: 100%;
  11. margin: 0;
  12. padding: 0;
  13. }
  14. body {
  15. font-family: 'Roboto', sans-serif;
  16. background: -webkit-linear-gradient(bottom, #4F6072, #8699AA);
  17. background: linear-gradient(to top, #4F6072, #8699AA);
  18. display: -webkit-box;
  19. display: -ms-flexbox;
  20. display: flex;
  21. -webkit-box-pack: center;
  22. -ms-flex-pack: center;
  23. justify-content: center;
  24. -webkit-box-align: center;
  25. -ms-flex-align: center;
  26. align-items: center;
  27. }
  28. .upload {
  29. position: relative;
  30. width: 400px;
  31. min-height: 445px;
  32. box-sizing: border-box;
  33. border-radius: 5px;
  34. box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2);
  35. padding-bottom: 20px;
  36. background: #fff;
  37. -webkit-animation: fadeup .5s .5s ease both;
  38. animation: fadeup .5s .5s ease both;
  39. -webkit-transform: translateY(20px);
  40. transform: translateY(20px);
  41. opacity: 0;
  42. text-align: center;
  43. margin: 0px auto;
  44. }
  45. .upload .upload-files header {
  46. background: #4db6ac;
  47. text-align: center;
  48. }
  49. .upload .upload-files header p {
  50. color: #fff;
  51. font-size: 40px;
  52. margin: 0;
  53. padding: 50px 0;
  54. }
  55. .upload .upload-files header p i {
  56. -webkit-transform: translateY(20px);
  57. transform: translateY(20px);
  58. opacity: 0;
  59. font-size: 30px;
  60. -webkit-animation: fadeup .5s 1s ease both;
  61. animation: fadeup .5s 1s ease both;
  62. }
  63. .upload .upload-files header p .up {
  64. font-weight: bold;
  65. -webkit-transform: translateX(-20px);
  66. transform: translateX(-20px);
  67. display: inline-block;
  68. opacity: 0;
  69. -webkit-animation: faderight .5s 1.5s ease both;
  70. animation: faderight .5s 1.5s ease both;
  71. }
  72. .upload .upload-files header p .load {
  73. display: inline-block;
  74. font-weight: 100;
  75. margin-left: -8px;
  76. -webkit-transform: translateX(-20px);
  77. transform: translateX(-20px);
  78. opacity: 0;
  79. -webkit-animation: faderight 1s 1.5s ease both;
  80. animation: faderight 1s 1.5s ease both;
  81. }
  82. .upload .upload-files .body {
  83. text-align: center;
  84. padding: 50px 0;
  85. padding-bottom: 30px;
  86. }
  87. .upload .upload-files .body.hidden {
  88. display: none;
  89. }
  90. .upload .upload-files .body input {
  91. visibility: hidden;
  92. }
  93. .upload .upload-files .body i {
  94. font-size: 65px;
  95. color: lightgray;
  96. }
  97. .upload .upload-files .body p {
  98. font-size: 14px;
  99. padding-top: 15px;
  100. line-height: 1.4;
  101. }
  102. .upload .upload-files .body p b,
  103. .upload .upload-files .body p a {
  104. color: #4db6ac;
  105. }
  106. .upload .upload-files .body.active {
  107. border: dashed 2px #4db6ac;
  108. }
  109. .upload .upload-files .body.active i {
  110. box-shadow: 0 0 0 -3px #fff, 0 0 0 lightgray, 0 0 0 -3px #fff, 0 0 0 lightgray;
  111. -webkit-animation: file .5s ease both;
  112. animation: file .5s ease both;
  113. }
  114. @-webkit-keyframes file {
  115. 50% {
  116. box-shadow: -8px 8px 0 -3px #fff, -8px 8px 0 lightgray, -8px 8px 0 -3px #fff, -8px 8px 0 lightgray;
  117. }
  118. 75%,
  119. 100% {
  120. box-shadow: -8px 8px 0 -3px #fff, -8px 8px 0 lightgray, -16px 16px 0 -3px #fff, -16px 16px 0 lightgray;
  121. }
  122. }
  123. @keyframes file {
  124. 50% {
  125. box-shadow: -8px 8px 0 -3px #fff, -8px 8px 0 lightgray, -8px 8px 0 -3px #fff, -8px 8px 0 lightgray;
  126. }
  127. 75%,
  128. 100% {
  129. box-shadow: -8px 8px 0 -3px #fff, -8px 8px 0 lightgray, -16px 16px 0 -3px #fff, -16px 16px 0 lightgray;
  130. }
  131. }
  132. .upload .upload-files .body.active .pointer-none {
  133. pointer-events: none;
  134. }
  135. .upload .upload-files footer {
  136. width: 100%;
  137. margin: 0 auto;
  138. height: 0;
  139. }
  140. .upload .upload-files footer .divider {
  141. margin: 0 auto;
  142. width: 0;
  143. border-top: solid 4px #46aba1;
  144. text-align: center;
  145. overflow: hidden;
  146. -webkit-transition: width .5s ease;
  147. transition: width .5s ease;
  148. }
  149. .upload .upload-files footer .divider span {
  150. display: inline-block;
  151. -webkit-transform: translateY(-25px);
  152. transform: translateY(-25px);
  153. font-size: 12px;
  154. padding-top: 8px;
  155. }
  156. .upload .upload-files footer.hasFiles {
  157. height: auto;
  158. }
  159. .upload .upload-files footer.hasFiles .divider {
  160. width: 100%;
  161. }
  162. .upload .upload-files footer.hasFiles .divider span {
  163. -webkit-transform: translateY(0);
  164. transform: translateY(0);
  165. -webkit-transition: -webkit-transform .5s .5s ease;
  166. transition: -webkit-transform .5s .5s ease;
  167. transition: transform .5s .5s ease;
  168. transition: transform .5s .5s ease, -webkit-transform .5s .5s ease;
  169. }
  170. .upload .upload-files footer .list-files {
  171. width: 320px;
  172. margin: 0 auto;
  173. margin-top: 15px;
  174. padding-left: 5px;
  175. text-align: center;
  176. overflow-x: hidden;
  177. overflow-y: auto;
  178. max-height: 210px;
  179. }
  180. .upload .upload-files footer .list-files::-webkit-scrollbar-track {
  181. background-color: rgba(211, 211, 211, 0.25);
  182. }
  183. .upload .upload-files footer .list-files::-webkit-scrollbar {
  184. width: 4px;
  185. background-color: rgba(211, 211, 211, 0.25);
  186. }
  187. .upload .upload-files footer .list-files::-webkit-scrollbar-thumb {
  188. background-color: rgba(77, 182, 172, 0.5);
  189. }
  190. .upload .upload-files footer .list-files .file {
  191. width: 300px;
  192. min-height: 50px;
  193. display: -webkit-box;
  194. display: -ms-flexbox;
  195. display: flex;
  196. -webkit-box-pack: justify;
  197. -ms-flex-pack: justify;
  198. justify-content: space-between;
  199. -webkit-box-align: center;
  200. -ms-flex-align: center;
  201. align-items: center;
  202. opacity: 0;
  203. -webkit-animation: fade .35s ease both;
  204. animation: fade .35s ease both;
  205. }
  206. .upload .upload-files footer .list-files .file .name {
  207. font-size: 12px;
  208. white-space: nowrap;
  209. text-overflow: ellipsis;
  210. overflow: hidden;
  211. width: 80px;
  212. text-align: left;
  213. }
  214. .upload .upload-files footer .list-files .file .progress {
  215. width: 175px;
  216. height: 5px;
  217. border: solid 1px lightgray;
  218. border-radius: 2px;
  219. background: -webkit-linear-gradient(right, rgba(77, 182, 172, 0.2), rgba(77, 182, 172, 0.8)) no-repeat;
  220. background: linear-gradient(to left, rgba(77, 182, 172, 0.2), rgba(77, 182, 172, 0.8)) no-repeat;
  221. background-size: 100% 100%;
  222. }
  223. .upload .upload-files footer .list-files .file .progress.active {
  224. -webkit-animation: progress 30s linear;
  225. animation: progress 30s linear;
  226. }
  227. @-webkit-keyframes progress {
  228. from {
  229. background-size: 0 100%;
  230. }
  231. to {
  232. background-size: 100% 100%;
  233. }
  234. }
  235. @keyframes progress {
  236. from {
  237. background-size: 0 100%;
  238. }
  239. to {
  240. background-size: 100% 100%;
  241. }
  242. }
  243. .upload .upload-files footer .list-files .file .done {
  244. cursor: pointer;
  245. width: 40px;
  246. height: 40px;
  247. background: #4db6ac;
  248. border-radius: 50%;
  249. margin-left: -10px;
  250. -webkit-transform: scale(0);
  251. transform: scale(0);
  252. position: relative;
  253. }
  254. .upload .upload-files footer .list-files .file .done:before {
  255. content: "View";
  256. position: absolute;
  257. top: 0;
  258. left: -5px;
  259. font-size: 24px;
  260. opacity: 0;
  261. }
  262. .upload .upload-files footer .list-files .file .done:hover:before {
  263. -webkit-transition: all .25s ease;
  264. transition: all .25s ease;
  265. top: -30px;
  266. opacity: 1;
  267. }
  268. .upload .upload-files footer .list-files .file .done.anim {
  269. -webkit-animation: done1 .5s ease forwards;
  270. animation: done1 .5s ease forwards;
  271. }
  272. .upload .upload-files footer .list-files .file .done.anim #path {
  273. -webkit-animation: done2 2.5s .5s ease forwards;
  274. animation: done2 2.5s .5s ease forwards;
  275. }
  276. .upload .upload-files footer .list-files .file .done #path {
  277. stroke-dashoffset: 7387.59423828125;
  278. stroke-dasharray: 7387.59423828125 7387.59423828125;
  279. stroke: #fff;
  280. fill: transparent;
  281. stroke-width: 50px;
  282. }
  283. @-webkit-keyframes done2 {
  284. to {
  285. stroke-dashoffset: 0;
  286. }
  287. }
  288. @keyframes done2 {
  289. to {
  290. stroke-dashoffset: 0;
  291. }
  292. }
  293. @-webkit-keyframes done1 {
  294. 50% {
  295. -webkit-transform: scale(0.5);
  296. transform: scale(0.5);
  297. opacity: 1;
  298. }
  299. 80% {
  300. -webkit-transform: scale(0.25);
  301. transform: scale(0.25);
  302. opacity: 1;
  303. }
  304. 100% {
  305. -webkit-transform: scale(0.5);
  306. transform: scale(0.5);
  307. opacity: 1;
  308. }
  309. }
  310. @keyframes done1 {
  311. 50% {
  312. -webkit-transform: scale(0.5);
  313. transform: scale(0.5);
  314. opacity: 1;
  315. }
  316. 80% {
  317. -webkit-transform: scale(0.25);
  318. transform: scale(0.25);
  319. opacity: 1;
  320. }
  321. 100% {
  322. -webkit-transform: scale(0.5);
  323. transform: scale(0.5);
  324. opacity: 1;
  325. }
  326. }
  327. .upload .upload-files footer .importar {
  328. outline: none;
  329. position: absolute;
  330. left: 0;
  331. right: 0;
  332. bottom: 20px;
  333. margin: auto;
  334. border: solid 1px #4db6ac;
  335. color: #4db6ac;
  336. background: transparent;
  337. padding: 8px 15px;
  338. font-size: 12px;
  339. border-radius: 4px;
  340. font-family: Roboto;
  341. line-height: 1;
  342. cursor: pointer;
  343. -webkit-transform: translateY(15px);
  344. transform: translateY(15px);
  345. opacity: 0;
  346. /*margin-left: calc(50% - 40px);*/
  347. }
  348. .upload .upload-files footer .importar.active {
  349. -webkit-transition: opacity .5s 1.5s ease, -webkit-transform .5s 1.5s ease;
  350. transition: opacity .5s 1.5s ease, -webkit-transform .5s 1.5s ease;
  351. transition: transform .5s 1.5s ease, opacity .5s 1.5s ease;
  352. transition: transform .5s 1.5s ease, opacity .5s 1.5s ease, -webkit-transform .5s 1.5s ease;
  353. -webkit-transform: translateY(0);
  354. transform: translateY(0);
  355. opacity: 1;
  356. }
  357. .upload .upload-files footer .importar:hover {
  358. background: #4db6ac;
  359. color: #fff;
  360. }
  361. @-webkit-keyframes fadeup {
  362. to {
  363. -webkit-transform: translateY(0);
  364. transform: translateY(0);
  365. opacity: 1;
  366. }
  367. }
  368. @keyframes fadeup {
  369. to {
  370. -webkit-transform: translateY(0);
  371. transform: translateY(0);
  372. opacity: 1;
  373. }
  374. }
  375. @-webkit-keyframes faderight {
  376. to {
  377. -webkit-transform: translateX(0);
  378. transform: translateX(0);
  379. opacity: 1;
  380. }
  381. }
  382. @keyframes faderight {
  383. to {
  384. -webkit-transform: translateX(0);
  385. transform: translateX(0);
  386. opacity: 1;
  387. }
  388. }
  389. @-webkit-keyframes fade {
  390. to {
  391. opacity: 1;
  392. }
  393. }
  394. @keyframes fade {
  395. to {
  396. opacity: 1;
  397. }
  398. }
  399. @media (max-width: 400px) {
  400. .upload {
  401. width: 100%;
  402. height: 100%;
  403. }
  404. }
  405. </style>
  406. </head>
  407. <body>
  408. <link rel="stylesheet" type="text/css" href="http://cdn.bootcss.com/font-awesome/4.6.0/css/font-awesome.min.css">
  409. <div class="upload">
  410. <div class="upload-files">
  411. <header>
  412. <p>
  413. <i class="fa fa-cloud-upload" aria-hidden="true"></i>
  414. <span class="up">up</span>
  415. <span class="load">load</span>
  416. </p>
  417. </header>
  418. <div class="body" id="drop">
  419. <i class="fa fa-file-text-o pointer-none" aria-hidden="true"></i>
  420. <!-- <p class="pointer-none"><b>拖放到这里</b> files here <br /> or <a href="" id="triggerFile">浏览</a>开始上传</p>-->
  421. <p class="pointer-none"><b>拖放到这里</b> files here <br /> or <a href="" id="triggerFile">浏览</a>开始上传</p>
  422. <input type="file" id="file" multiple />
  423. </div>
  424. <footer>
  425. <div class="divider">
  426. <span><AR>FILES</AR></span>
  427. </div>
  428. <div class="list-files">
  429. <!-- template -->
  430. </div>
  431. <button class="importar" onclick="UpladFile()">上传</button>
  432. <!-- <button class="importar" onclick="cancleUploadFile()">CALCLE FILES</button>-->
  433. </footer>
  434. </div>
  435. </div>
  436. <script type="application/javascript">
  437. //上传文件方法
  438. var xhr;
  439. function UpladFile() {
  440. var fileObj = document.getElementById("file").files[0]; // js 获取文件对象
  441. // var url = "http://localhost:8080" + "/api/report/generalReportTemplate"; // 接收上传文件的后台地址
  442. var url = "http://106.14.81.62:8080" + "/api/report/generalReportTemplate"; // 接收上传文件的后台地址
  443. var form = new FormData(); // FormData 对象
  444. form.append("file", fileObj); // 文件对象
  445. xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
  446. xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
  447. xhr.onload = uploadComplete; //请求完成
  448. xhr.onerror = uploadFailed; //请求失败
  449. xhr.upload.onprogress = progressFunction; // 添加 监听函数
  450. xhr.send(form); //开始上传,发送form数据
  451. }
  452. // 处理上传进度
  453. function progressFunction(e){
  454. var progress_bar = document.getElementById("progress_bar");
  455. var loading_dom = document.getElementById("loading");
  456. var loading = Math.round(e.loaded / e.total * 100);
  457. // console.log("loading::", loading);
  458. if(loading === 100){
  459. loading_dom.innerHTML = "上传成功";
  460. }else{
  461. loading_dom.innerHTML = "上传进度"+loading+"%"
  462. }
  463. progress_bar.style.width = String(loading * 3) + "px";
  464. }
  465. //上传成功响应
  466. function uploadComplete(evt) {
  467. //服务断接收完文件返回的结果
  468. // console.log(evt.target.responseText);
  469. // var data = JSON.parse(evt.target.responseText);
  470. // console.log(data);
  471. // if (data.success) {
  472. //
  473. // } else {
  474. // alert("上传失败!");
  475. // }
  476. alert("服务器模板替换成功!");
  477. }
  478. //上传失败
  479. function uploadFailed(evt) {
  480. alert("上传失败!");
  481. }
  482. </script>
  483. <script type="text/javascript">
  484. //DOM
  485. const $ = document.querySelector.bind(document);
  486. //APP
  487. let App = {};
  488. App.init = (function() {
  489. //Init
  490. function handleFileSelect(evt) {
  491. const files = evt.target.files; // FileList object
  492. //files template
  493. let template = `${Object.keys(files)
  494. .map(file => `<div class="file file--${file}">
  495. <div class="name"><span>${files[file].name}</span></div>
  496. <div class="progress active"></div>
  497. <div class="done">
  498. <a href="" target="_blank">
  499. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 1000 1000">
  500. <g><path id="path" d="M500,10C229.4,10,10,229.4,10,500c0,270.6,219.4,490,490,490c270.6,0,490-219.4,490-490C990,229.4,770.6,10,500,10z M500,967.7C241.7,967.7,32.3,758.3,32.3,500C32.3,241.7,241.7,32.3,500,32.3c258.3,0,467.7,209.4,467.7,467.7C967.7,758.3,758.3,967.7,500,967.7z M748.4,325L448,623.1L301.6,477.9c-4.4-4.3-11.4-4.3-15.8,0c-4.4,4.3-4.4,11.3,0,15.6l151.2,150c0.5,1.3,1.4,2.6,2.5,3.7c4.4,4.3,11.4,4.3,15.8,0l308.9-306.5c4.4-4.3,4.4-11.3,0-15.6C759.8,320.7,752.7,320.7,748.4,325z"</g>
  501. </svg>
  502. </a>
  503. </div>
  504. </div>`)
  505. .join("")}`+`
  506. <div style="text-align: left;display: inline-block;width: 300px; height: 20px; border: 1px solid #4EB6AC; border-radius: 5px;position: relative">
  507. <div id="progress_bar" style="display: inline-block; width: 0px; height: 20px;background-color: #05E1BA"></div>
  508. <div style="text-align: center;width: 300px;position: absolute; top: 0; font-size:14px; color: #4EB6AC">
  509. <div id="loading">
  510. 上传进度0%
  511. </div>
  512. </div>
  513. </div>`;
  514. $("#drop").classList.add("hidden");
  515. $("footer").classList.add("hasFiles");
  516. $(".importar").classList.add("active");
  517. setTimeout(() => {
  518. $(".list-files").innerHTML = template;
  519. }, 1000);
  520. Object.keys(files).forEach(file => {
  521. let load = 2000 + file * 2000; // fake load
  522. setTimeout(() => {
  523. $(`.file--${file}`).querySelector(".progress").classList.remove("active");
  524. $(`.file--${file}`).querySelector(".done").classList.add("anim");
  525. }, load);
  526. });
  527. }
  528. // trigger input
  529. $("#triggerFile").addEventListener("click", evt => {
  530. evt.preventDefault();
  531. $("input[type=file]").click();
  532. });
  533. // drop events
  534. $("#drop").ondragleave = evt => {
  535. $("#drop").classList.remove("active");
  536. evt.preventDefault();
  537. };
  538. $("#drop").ondragover = $("#drop").ondragenter = evt => {
  539. $("#drop").classList.add("active");
  540. evt.preventDefault();
  541. };
  542. $("#drop").ondrop = evt => {
  543. var files = evt.dataTransfer.files; // FileList object
  544. //files template
  545. let template = `${Object.keys(files)
  546. .map(file => `<div class="file file--${file}">
  547. <div class="name"><span>${files[file].name}</span></div>
  548. <div class="progress active"></div>
  549. <div class="done">
  550. <a href="" target="_blank">
  551. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0px" y="0px" viewBox="0 0 1000 1000">
  552. <g><path id="path" d="M500,10C229.4,10,10,229.4,10,500c0,270.6,219.4,490,490,490c270.6,0,490-219.4,490-490C990,229.4,770.6,10,500,10z M500,967.7C241.7,967.7,32.3,758.3,32.3,500C32.3,241.7,241.7,32.3,500,32.3c258.3,0,467.7,209.4,467.7,467.7C967.7,758.3,758.3,967.7,500,967.7z M748.4,325L448,623.1L301.6,477.9c-4.4-4.3-11.4-4.3-15.8,0c-4.4,4.3-4.4,11.3,0,15.6l151.2,150c0.5,1.3,1.4,2.6,2.5,3.7c4.4,4.3,11.4,4.3,15.8,0l308.9-306.5c4.4-4.3,4.4-11.3,0-15.6C759.8,320.7,752.7,320.7,748.4,325z"</g>
  553. </svg>
  554. </a>
  555. </div>
  556. </div>`)
  557. .join("")}`+`
  558. <div style="text-align: left;display: inline-block;width: 300px; height: 20px; border: 1px solid #fff; border-radius: 2px;position: relative">
  559. <div id="progress_bar" style="display: inline-block; width: 0px; height: 20px;background-color: #05EED8"></div>
  560. <div style="text-align: center;width: 300px;position: absolute; top: 0; font-size:16px; color: #413F43">
  561. <div id="loading">
  562. 上传进度0%
  563. </div>
  564. </div>
  565. </div>`;
  566. $("#drop").classList.add("hidden");
  567. $("footer").classList.add("hasFiles");
  568. $(".importar").classList.add("active");
  569. setTimeout(() => {
  570. $(".list-files").innerHTML = template;
  571. }, 1000);
  572. Object.keys(files).forEach(file => {
  573. let load = 2000 + file * 2000; // fake load
  574. setTimeout(() => {
  575. $(`.file--${file}`).querySelector(".progress").classList.remove("active");
  576. $(`.file--${file}`).querySelector(".done").classList.add("anim");
  577. }, load);
  578. });
  579. $("input[type=file]").files = evt.dataTransfer.files;
  580. var fileObj = document.getElementById("file").files[0];
  581. evt.preventDefault();
  582. // $("input[type=file]").files = evt.dataTransfer.files[0];
  583. // $("footer").classList.add("hasFiles");
  584. // $("#drop").classList.remove("active");
  585. // evt.preventDefault();
  586. };
  587. //upload more
  588. // $(".importar").addEventListener("click", () => {
  589. // $(".list-files").innerHTML = "";
  590. // $("footer").classList.remove("hasFiles");
  591. // // $(".importar").classList.remove("active");
  592. // // setTimeout(() => {
  593. // // $("#drop").classList.remove("hidden");
  594. // // }, 500);
  595. // });
  596. // input change
  597. $("input[type=file]").addEventListener("change", handleFileSelect);
  598. })();
  599. </script>
  600. </body>
  601. </html>