From 357a1bd42e0e5e47c0da872aba6b4745098f490c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E5=B0=8F=E5=A2=A8?= <2291200076@qq.com> Date: Fri, 8 Apr 2022 17:53:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=B0=E5=AD=98=E5=82=A8=E6=A1=B6=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90=EF=BC=9B=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E5=89=8D=E7=AB=AF=E8=AE=A1=E7=AE=97=E6=96=87=E4=BB=B6?= =?UTF-8?q?SHA1=EF=BC=9B=E6=B7=BB=E5=8A=A0=E8=85=BE=E8=AE=AF=E4=BA=91?= =?UTF-8?q?=E7=94=9F=E6=88=90SecretId=E3=80=81SecretKey=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../public/assets/lib/crypto-js/sha1.js | 162 ++++++++++++ .../dashboard/admin/FileManage_Upload.html | 207 ++++++++++++++- .../src/main/java/plus/bookshelf/App.java | 20 +- .../main/java/plus/bookshelf/AppListener.java | 23 ++ .../Common/FileManager/QCloudCosUtils.java | 49 +++- .../Controller/Controller/FileController.java | 84 +++++++ .../bookshelf/Dao/DO/FileOperationDO.java | 236 ++++++++++++++++++ .../Dao/Mapper/FileOperationDOMapper.java | 53 ++++ .../resources/application.sample.properties | 20 +- .../mapping/FileOperationDOMapper.xml | 149 +++++++++++ .../src/main/resources/mybatis-generator.xml | 3 + .../image-20220408141017781.png | Bin 0 -> 22041 bytes .../image-20220408141246583.png | Bin 0 -> 100728 bytes .../image-20220408141715193.png | Bin 0 -> 38023 bytes .../image-20220408141742336.png | Bin 0 -> 118596 bytes .../image-20220408141827890.png | Bin 0 -> 21748 bytes .../image-20220408142012036.png | Bin 0 -> 82575 bytes .../image-20220408142047431.png | Bin 0 -> 126019 bytes .../image-20220408142738210.png | Bin 0 -> 89671 bytes .../image-20220408143017202.png | Bin 0 -> 84007 bytes docs/腾讯云生成SecretId、SecretKey.md | 57 +++++ 21 files changed, 1014 insertions(+), 49 deletions(-) create mode 100644 bookshelfplus-frontend/public/assets/lib/crypto-js/sha1.js create mode 100644 bookshelfplus/src/main/java/plus/bookshelf/AppListener.java create mode 100644 bookshelfplus/src/main/java/plus/bookshelf/Controller/Controller/FileController.java create mode 100644 bookshelfplus/src/main/java/plus/bookshelf/Dao/DO/FileOperationDO.java create mode 100644 bookshelfplus/src/main/java/plus/bookshelf/Dao/Mapper/FileOperationDOMapper.java create mode 100644 bookshelfplus/src/main/resources/mapping/FileOperationDOMapper.xml create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408141017781.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408141246583.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408141715193.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408141742336.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408141827890.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408142012036.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408142047431.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408142738210.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.assets/image-20220408143017202.png create mode 100644 docs/腾讯云生成SecretId、SecretKey.md diff --git a/bookshelfplus-frontend/public/assets/lib/crypto-js/sha1.js b/bookshelfplus-frontend/public/assets/lib/crypto-js/sha1.js new file mode 100644 index 0000000..f0f6277 --- /dev/null +++ b/bookshelfplus-frontend/public/assets/lib/crypto-js/sha1.js @@ -0,0 +1,162 @@ +/** + * 本代码来自: https://bbs.csdn.net/topics/391839640 评论区,有修改 + */ +/* + * Crypto-JS v2.5.1 + * http://code.google.com/p/crypto-js/ + * (c) 2009-2011 by Jeff Mott. All rights reserved. + * http://code.google.com/p/crypto-js/wiki/License + */ +(typeof Crypto=="undefined"||!Crypto.util)&&function(){var e=self.Crypto={},g=e.util={rotl:function(a,b){return a<>>32-b},rotr:function(a,b){return a<<32-b|a>>>b},endian:function(a){if(a.constructor==Number)return g.rotl(a,8)&16711935|g.rotl(a,24)&4278255360;for(var b=0;b0;a--)b.push(Math.floor(Math.random()*256));return b},bytesToWords:function(a){for(var b=[],c=0,d=0;c>>5]|=a[c]<<24- + d%32;return b},wordsToBytes:function(a){for(var b=[],c=0;c>>5]>>>24-c%32&255);return b},bytesToHex:function(a){for(var b=[],c=0;c>>4).toString(16)),b.push((a[c]&15).toString(16));return b.join("")},hexToBytes:function(a){for(var b=[],c=0;c>>6*(3-e)&63)):b.push("=");return b.join("")},base64ToBytes:function(a){if(typeof atob=="function")return f.stringToBytes(atob(a));for(var a=a.replace(/[^A-Z0-9+\/]/ig,""),b=[],c=0,d=0;c>> + 6-d*2);return b}},e=e.charenc={};e.UTF8={stringToBytes:function(a){return f.stringToBytes(unescape(encodeURIComponent(a)))},bytesToString:function(a){return decodeURIComponent(escape(f.bytesToString(a)))}};var f=e.Binary={stringToBytes:function(a){for(var b=[],c=0;c>> 31); + } + var f,k; + if(j < 20) + { + f = (h1 & h2 | ~h1 & h3); + k = 1518500249; + } + else if(j < 40) + { + f = (h1 ^ h2 ^ h3); + k = 1859775393; + } + else if(j < 60) + { + f = (h1 & h2 | h1 & h3 | h2 & h3); + k = -1894007588; + } + else + { + f = (h1 ^ h2 ^ h3); + k = -899497514; + } + + var t = ((h0 << 5) | (h0 >>> 27)) +h4 + (words[j] >>> 0) + f + k; + h4 = h3; + h3 = h2; + h2 = (h1 << 30) | (h1 >>> 2); + h1 = h0; + h0 = t; + } + h0 = (h0 + th0) | 0; + h1 = (h1 + th1) | 0; + h2 = (h2 + th2) | 0; + h3 = (h3 + th3) | 0; + h4 = (h4 + th4) | 0; + } + return [h0, h1, h2, h3, h4]; + } + + var run = function(file,inStart,inEnd) + { + var end = Math.min(inEnd, file.size); + var start = inStart; + var reader = new FileReader(); + + reader.onload = function() + { + file.sha1_progress = (end * 100 / file.size); + var event = event || window.event; + var result = event.result || event.target.result + var block = Crypto.util.bytesToWords( new Uint8Array(result)); + + if (end === file.size) + { + var bTotal, bLeft, bTotalH, bTotalL; + bTotal = file.size * 8; + bLeft = (end - start) * 8; + + bTotalH = Math.floor(bTotal / 0x100000000); + bTotalL = bTotal & 0xFFFFFFFF; + + // Padding + block[bLeft >>> 5] |= 0x80 << (24 - bLeft % 32); + block[((bLeft + 64 >>> 9) << 4) + 14] = bTotalH; + block[((bLeft + 64 >>> 9) << 4) + 15] = bTotalL; + + hash = sha1(block, hash); + file.sha1_hash = Crypto.util.bytesToHex(Crypto.util.wordsToBytes(hash)); + // console.log(file.sha1_hash); + resolve(file.sha1_hash); + } + else + { + hash = sha1(block, hash); + start += buffer; + end += buffer; + run(file,start,end); + } + progressingCallback(file); + // console.log(file.sha1_progress); + } + var blob = file.slice(start, end); + reader.readAsArrayBuffer(blob); + } + + var checkApi = function() + { + if((typeof File == 'undefined')) + return false; + + if (!File.prototype.slice) { + if(File.prototype.webkitSlice) + File.prototype.slice = File.prototype.webkitSlice; + else if(File.prototype.mozSlice) + File.prototype.slice = File.prototype.mozSlice; + } + + if (!window.File || !window.FileReader || !window.FileList || !window.Blob || !File.prototype.slice) + return false; + + return true; + } + + if(checkApi()) + { + run(settings,0,buffer); + } + else + // return false; + reject("File API is not supported"); + }); + return await promise; +} \ No newline at end of file diff --git a/bookshelfplus-frontend/views/dashboard/admin/FileManage_Upload.html b/bookshelfplus-frontend/views/dashboard/admin/FileManage_Upload.html index c34c415..f5a8576 100644 --- a/bookshelfplus-frontend/views/dashboard/admin/FileManage_Upload.html +++ b/bookshelfplus-frontend/views/dashboard/admin/FileManage_Upload.html @@ -30,6 +30,29 @@ background-color: grey; color: #b5b5b5; } + + .process-bar { + background-color: #b5b5b5; + width: 100%; + height: 5px; + border-radius: 2px; + overflow: hidden; + } + + .process-bar-inner { + background-color: #39a705; + width: 0; + height: 100%; + transition: all 0.3s; + } + + .file-info-paragraph>span { + background-color: lightpink; + color: darkred; + padding: 1px 5px; + border-radius: 4px; + font-size: 0.8em; + }

返回上一级 @@ -44,36 +67,69 @@

- 建议配合 Python 脚本使用,上传文件更方便 + 仅支持 Chrome 内核浏览器

+ + +