From fcd2d6245d81014e1addc80ccea8a96c33ac477d Mon Sep 17 00:00:00 2001 From: yuyuanshifu <747342561@qq.com> Date: Fri, 17 Jul 2020 19:44:07 +0800 Subject: [PATCH] new multipart upload --- package-lock.json | 74 ++++++-- package.json | 4 + routers/repo/attachment.go | 8 +- templates/repo/datasets/dataset.tmpl | 1 - templates/repo/datasets/index.tmpl | 6 +- web_src/js/App.vue | 206 ++++++++++++++++++++++ web_src/js/assets/bg.png | Bin 0 -> 1709 bytes web_src/js/assets/body_bg.gif | Bin 0 -> 49 bytes web_src/js/assets/css/iconfont.css | 65 +++++++ web_src/js/assets/css/iconfont.eot | Bin 0 -> 4532 bytes web_src/js/assets/css/iconfont.js | 1 + web_src/js/assets/css/iconfont.json | 93 ++++++++++ web_src/js/assets/css/iconfont.svg | 62 +++++++ web_src/js/assets/css/iconfont.ttf | Bin 0 -> 4364 bytes web_src/js/assets/css/iconfont.woff | Bin 0 -> 2960 bytes web_src/js/assets/css/iconfont.woff2 | Bin 0 -> 2412 bytes web_src/js/assets/logo.png | Bin 0 -> 2658 bytes web_src/js/components/Breakpoint.vue | 230 +++++++++++++++++++++++++ web_src/js/components/Chunk.vue | 153 +++++++++++++++++ web_src/js/components/Md5.vue | 244 +++++++++++++++++++++++++++ web_src/js/components/Skip.vue | 233 +++++++++++++++++++++++++ web_src/js/components/Uploader.vue | 112 ++++++++++++ web_src/js/index.js | 21 +++ web_src/js/router/index.js | 39 +++++ 24 files changed, 1528 insertions(+), 24 deletions(-) mode change 100644 => 100755 templates/repo/datasets/dataset.tmpl mode change 100644 => 100755 templates/repo/datasets/index.tmpl create mode 100755 web_src/js/App.vue create mode 100755 web_src/js/assets/bg.png create mode 100755 web_src/js/assets/body_bg.gif create mode 100755 web_src/js/assets/css/iconfont.css create mode 100755 web_src/js/assets/css/iconfont.eot create mode 100755 web_src/js/assets/css/iconfont.js create mode 100755 web_src/js/assets/css/iconfont.json create mode 100755 web_src/js/assets/css/iconfont.svg create mode 100755 web_src/js/assets/css/iconfont.ttf create mode 100755 web_src/js/assets/css/iconfont.woff create mode 100755 web_src/js/assets/css/iconfont.woff2 create mode 100755 web_src/js/assets/logo.png create mode 100755 web_src/js/components/Breakpoint.vue create mode 100755 web_src/js/components/Chunk.vue create mode 100755 web_src/js/components/Md5.vue create mode 100755 web_src/js/components/Skip.vue create mode 100755 web_src/js/components/Uploader.vue mode change 100644 => 100755 web_src/js/index.js create mode 100755 web_src/js/router/index.js diff --git a/package-lock.json b/package-lock.json index 71183fed4..8639b81ed 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1797,8 +1797,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "optional": true + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -1919,6 +1918,14 @@ "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "optional": true }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, "babel-loader": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", @@ -2847,7 +2854,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "optional": true, "requires": { "delayed-stream": "~1.0.0" } @@ -3584,8 +3590,7 @@ "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "optional": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegate": { "version": "3.2.0", @@ -4801,8 +4806,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "optional": true + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fancy-log": { "version": "1.3.3", @@ -5172,6 +5176,29 @@ "readable-stream": "^2.3.6" } }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "fomantic-ui": { "version": "2.8.4", "resolved": "https://registry.npmjs.org/fomantic-ui/-/fomantic-ui-2.8.4.tgz", @@ -7594,8 +7621,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsesc": { "version": "2.5.2", @@ -8651,14 +8677,12 @@ "mime-db": { "version": "1.44.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", - "optional": true + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" }, "mime-types": { "version": "2.1.27", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", - "optional": true, "requires": { "mime-db": "1.44.0" } @@ -11996,6 +12020,11 @@ } } }, + "simple-uploader.js": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/simple-uploader.js/-/simple-uploader.js-0.5.4.tgz", + "integrity": "sha512-Dmysgp0wyKqGdnZ9qnxS7QTg/Hfr25GxKM2XlrEnmzSPFmKroFqzW4Qaq/AbJDBvXv4YPGqS3S5YfVI3UxAU0A==" + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -12187,6 +12216,11 @@ "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" }, + "spark-md5": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", + "integrity": "sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig==" + }, "sparkles": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", @@ -13620,8 +13654,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type": { "version": "1.2.0", @@ -14295,6 +14328,19 @@ "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-0.4.5.tgz", "integrity": "sha512-bhP7MlgJQ8TIkZJXAfDf78uJO+mEI3CaLABLjv0WNzr4CcGRGPIAItyWYnP6LsPA4Oq0WE+suidNs6dgpO4RHg==" }, + "vue-router": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.3.4.tgz", + "integrity": "sha512-SdKRBeoXUjaZ9R/8AyxsdTqkOfMcI5tWxPZOUX5Ie1BTL5rPSZ0O++pbiZCeYeythiZIdLEfkDiQPKIaWk5hDg==" + }, + "vue-simple-uploader": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/vue-simple-uploader/-/vue-simple-uploader-0.7.4.tgz", + "integrity": "sha512-33uv07lkVj7m9gI7IIrQHAUcZkvl70g55lxnfnO/MZ8icwqiemW9Ah4ZexGWNrEfL1p6fV54PlOGICU17aBPFQ==", + "requires": { + "simple-uploader.js": "^0.5.4" + } + }, "vue-style-loader": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", diff --git a/package.json b/package.json index 7fb8246af..3e11dc18f 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "@babel/preset-env": "7.9.6", "@babel/runtime": "7.9.6", "@primer/octicons": "9.6.0", + "axios": "0.19.2", "babel-loader": "8.1.0", "clipboard": "2.0.6", "core-js": "3.6.5", @@ -34,6 +35,7 @@ "postcss-loader": "3.0.0", "postcss-preset-env": "6.7.0", "postcss-safe-parser": "4.0.2", + "spark-md5": "3.0.1", "svg-sprite-loader": "5.0.0", "svgo": "1.3.2", "svgo-loader": "2.2.1", @@ -43,6 +45,8 @@ "vue-bar-graph": "1.2.0", "vue-calendar-heatmap": "0.8.4", "vue-loader": "15.9.2", + "vue-router": "3.3.4", + "vue-simple-uploader": "0.7.4", "vue-template-compiler": "2.6.11", "webpack": "4.43.0", "webpack-cli": "3.3.11", diff --git a/routers/repo/attachment.go b/routers/repo/attachment.go index 0233725dd..63af61fb7 100755 --- a/routers/repo/attachment.go +++ b/routers/repo/attachment.go @@ -360,20 +360,20 @@ func NewMultipart(ctx *context.Context) { return } - err := upload.VerifyFileType(ctx.Params("file_type"), strings.Split(setting.Attachment.AllowedTypes, ",")) + err := upload.VerifyFileType(ctx.Query("fileType"), strings.Split(setting.Attachment.AllowedTypes, ",")) if err != nil { ctx.Error(400, err.Error()) return } if setting.Attachment.StoreType == storage.MinioStorageType { - totalChunkCounts := ctx.ParamsInt("totalChunkCounts") + totalChunkCounts := ctx.QueryInt("totalChunkCounts") if totalChunkCounts > minio_ext.MaxPartsCount { ctx.Error(400, fmt.Sprintf("chunk counts(%d) is too much", totalChunkCounts)) return } - fileSize := ctx.ParamsInt64("size") + fileSize := ctx.QueryInt64("size") if fileSize > minio_ext.MaxMultipartPutObjectSize { ctx.Error(400, fmt.Sprintf("file size(%d) is too big", fileSize)) return @@ -390,7 +390,7 @@ func NewMultipart(ctx *context.Context) { UUID: uuid, UserID: ctx.User.ID, UploadID: uploadID, - Md5: ctx.Params("md5"), + Md5: ctx.Query("md5"), Size: fileSize, TotalChunks:totalChunkCounts, }) diff --git a/templates/repo/datasets/dataset.tmpl b/templates/repo/datasets/dataset.tmpl old mode 100644 new mode 100755 index 8ea4d9f64..ac0fd2b79 --- a/templates/repo/datasets/dataset.tmpl +++ b/templates/repo/datasets/dataset.tmpl @@ -3,6 +3,5 @@
拖动文件
+BIL^kU&zA9;--)*8
z8nc7L*K*|Kj*LcKI3z8n=9vMNJbuhko~vBZ%0>#|tD>1%-helloweba
+ 文件上传之暂停和断点续传和跨浏览器续传
+ helloweba
+ 大文件上传之分片上传
+ helloweba
+ 超大文件上传和计算文件MD5值
+ helloweba
+