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 @@
-
diff --git a/templates/repo/datasets/index.tmpl b/templates/repo/datasets/index.tmpl
old mode 100644
new mode 100755
index fbf386ec9..7f292d99e
--- a/templates/repo/datasets/index.tmpl
+++ b/templates/repo/datasets/index.tmpl
@@ -65,11 +65,7 @@
- {{if .Permission.CanWrite $.UnitTypeDatasets}}
-
- {{end}}
+
diff --git a/web_src/js/App.vue b/web_src/js/App.vue
new file mode 100755
index 000000000..d54e33ff2
--- /dev/null
+++ b/web_src/js/App.vue
@@ -0,0 +1,206 @@
+
+
+
+
+ 拖动文件
+ 选择文件
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web_src/js/assets/bg.png b/web_src/js/assets/bg.png
new file mode 100755
index 000000000..7b9b1a5fb
Binary files /dev/null and b/web_src/js/assets/bg.png differ
diff --git a/web_src/js/assets/body_bg.gif b/web_src/js/assets/body_bg.gif
new file mode 100755
index 000000000..9c6b3916f
Binary files /dev/null and b/web_src/js/assets/body_bg.gif differ
diff --git a/web_src/js/assets/css/iconfont.css b/web_src/js/assets/css/iconfont.css
new file mode 100755
index 000000000..4f83f77ec
--- /dev/null
+++ b/web_src/js/assets/css/iconfont.css
@@ -0,0 +1,65 @@
+@font-face {font-family: "iconfont";
+ src: url('iconfont.eot?t=1585640036938'); /* IE9 */
+ src: url('iconfont.eot?t=1585640036938#iefix') format('embedded-opentype'), /* IE6-IE8 */
+ url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
+ url('iconfont.woff?t=1585640036938') format('woff'),
+ url('iconfont.ttf?t=1585640036938') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
+ url('iconfont.svg?t=1585640036938#iconfont') format('svg'); /* iOS 4.1- */
+}
+
+.iconfont {
+ font-family: "iconfont" !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-zip:before {
+ content: "\e626";
+}
+
+.icon-unknown:before {
+ content: "\e613";
+}
+
+.icon-audio:before {
+ content: "\e645";
+}
+
+.icon-image:before {
+ content: "\e656";
+}
+
+.icon-video:before {
+ content: "\e617";
+}
+
+.icon-selimage:before {
+ content: "\e724";
+}
+
+.icon-dir:before {
+ content: "\e761";
+}
+
+.icon-tianjia:before {
+ content: "\e61f";
+}
+
+.icon-mkdir:before {
+ content: "\e607";
+}
+
+.icon-upload:before {
+ content: "\e614";
+}
+
+.icon-document:before {
+ content: "\e760";
+}
+
+.icon-folder:before {
+ content: "\e686";
+}
+
diff --git a/web_src/js/assets/css/iconfont.eot b/web_src/js/assets/css/iconfont.eot
new file mode 100755
index 000000000..297685327
Binary files /dev/null and b/web_src/js/assets/css/iconfont.eot differ
diff --git a/web_src/js/assets/css/iconfont.js b/web_src/js/assets/css/iconfont.js
new file mode 100755
index 000000000..86c634624
--- /dev/null
+++ b/web_src/js/assets/css/iconfont.js
@@ -0,0 +1 @@
+!function(n){var c,a='',t=(c=document.getElementsByTagName("script"))[c.length-1].getAttribute("data-injectcss");if(t&&!n.__iconfont__svg__cssinject__){n.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(c){console&&console.log(c)}}!function(c){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(c,0);else{var t=function(){document.removeEventListener("DOMContentLoaded",t,!1),c()};document.addEventListener("DOMContentLoaded",t,!1)}else document.attachEvent&&(l=c,o=n.document,i=!1,(a=function(){try{o.documentElement.doScroll("left")}catch(c){return void setTimeout(a,50)}e()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,e())});function e(){i||(i=!0,l())}var l,o,i,a}(function(){var c,t,e,l,o,i;(c=document.createElement("div")).innerHTML=a,a=null,(t=c.getElementsByTagName("svg")[0])&&(t.setAttribute("aria-hidden","true"),t.style.position="absolute",t.style.width=0,t.style.height=0,t.style.overflow="hidden",e=t,(l=document.body).firstChild?(o=e,(i=l.firstChild).parentNode.insertBefore(o,i)):l.appendChild(e))})}(window);
\ No newline at end of file
diff --git a/web_src/js/assets/css/iconfont.json b/web_src/js/assets/css/iconfont.json
new file mode 100755
index 000000000..3119c8772
--- /dev/null
+++ b/web_src/js/assets/css/iconfont.json
@@ -0,0 +1,93 @@
+{
+ "id": "1720184",
+ "name": "upload",
+ "font_family": "iconfont",
+ "css_prefix_text": "icon-",
+ "description": "",
+ "glyphs": [
+ {
+ "icon_id": "6049876",
+ "name": "压缩包",
+ "font_class": "zip",
+ "unicode": "e626",
+ "unicode_decimal": 58918
+ },
+ {
+ "icon_id": "553902",
+ "name": "文档",
+ "font_class": "unknown",
+ "unicode": "e613",
+ "unicode_decimal": 58899
+ },
+ {
+ "icon_id": "1004653",
+ "name": "文件-音频",
+ "font_class": "audio",
+ "unicode": "e645",
+ "unicode_decimal": 58949
+ },
+ {
+ "icon_id": "1071023",
+ "name": "图像1",
+ "font_class": "image",
+ "unicode": "e656",
+ "unicode_decimal": 58966
+ },
+ {
+ "icon_id": "1638517",
+ "name": "视频",
+ "font_class": "video",
+ "unicode": "e617",
+ "unicode_decimal": 58903
+ },
+ {
+ "icon_id": "13137449",
+ "name": "图像_未选择",
+ "font_class": "selimage",
+ "unicode": "e724",
+ "unicode_decimal": 59172
+ },
+ {
+ "icon_id": "4933421",
+ "name": "文件夹",
+ "font_class": "dir",
+ "unicode": "e761",
+ "unicode_decimal": 59233
+ },
+ {
+ "icon_id": "521050",
+ "name": "添加",
+ "font_class": "tianjia",
+ "unicode": "e61f",
+ "unicode_decimal": 58911
+ },
+ {
+ "icon_id": "602556",
+ "name": "网盘-新建文件夹",
+ "font_class": "mkdir",
+ "unicode": "e607",
+ "unicode_decimal": 58887
+ },
+ {
+ "icon_id": "2305613",
+ "name": "上传文件",
+ "font_class": "upload",
+ "unicode": "e614",
+ "unicode_decimal": 58900
+ },
+ {
+ "icon_id": "4933419",
+ "name": "文件",
+ "font_class": "document",
+ "unicode": "e760",
+ "unicode_decimal": 59232
+ },
+ {
+ "icon_id": "6583375",
+ "name": "文件",
+ "font_class": "folder",
+ "unicode": "e686",
+ "unicode_decimal": 59014
+ }
+ ]
+}
diff --git a/web_src/js/assets/css/iconfont.svg b/web_src/js/assets/css/iconfont.svg
new file mode 100755
index 000000000..dec91fd47
--- /dev/null
+++ b/web_src/js/assets/css/iconfont.svg
@@ -0,0 +1,62 @@
+
+
+
+
diff --git a/web_src/js/assets/css/iconfont.ttf b/web_src/js/assets/css/iconfont.ttf
new file mode 100755
index 000000000..1b922157c
Binary files /dev/null and b/web_src/js/assets/css/iconfont.ttf differ
diff --git a/web_src/js/assets/css/iconfont.woff b/web_src/js/assets/css/iconfont.woff
new file mode 100755
index 000000000..efbdade50
Binary files /dev/null and b/web_src/js/assets/css/iconfont.woff differ
diff --git a/web_src/js/assets/css/iconfont.woff2 b/web_src/js/assets/css/iconfont.woff2
new file mode 100755
index 000000000..53579e365
Binary files /dev/null and b/web_src/js/assets/css/iconfont.woff2 differ
diff --git a/web_src/js/assets/logo.png b/web_src/js/assets/logo.png
new file mode 100755
index 000000000..b48e55a9d
Binary files /dev/null and b/web_src/js/assets/logo.png differ
diff --git a/web_src/js/components/Breakpoint.vue b/web_src/js/components/Breakpoint.vue
new file mode 100755
index 000000000..6fd25c275
--- /dev/null
+++ b/web_src/js/components/Breakpoint.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+
+ 上传文件
+ 上传文件夹
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web_src/js/components/Chunk.vue b/web_src/js/components/Chunk.vue
new file mode 100755
index 000000000..362fb6e66
--- /dev/null
+++ b/web_src/js/components/Chunk.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+ 上传文件
+ 上传文件夹
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web_src/js/components/Md5.vue b/web_src/js/components/Md5.vue
new file mode 100755
index 000000000..ee5d04149
--- /dev/null
+++ b/web_src/js/components/Md5.vue
@@ -0,0 +1,244 @@
+
+
+
+
+
+
+
+
+
+ 上传文件
+ 上传文件夹
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web_src/js/components/Skip.vue b/web_src/js/components/Skip.vue
new file mode 100755
index 000000000..45acb2268
--- /dev/null
+++ b/web_src/js/components/Skip.vue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+ 上传文件
+ 上传文件夹
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web_src/js/components/Uploader.vue b/web_src/js/components/Uploader.vue
new file mode 100755
index 000000000..c8ca67676
--- /dev/null
+++ b/web_src/js/components/Uploader.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
温馨提示:可将文件拖动到灰色区域上传
+
+
+
+ 上传文件
+ 上传文件夹
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web_src/js/index.js b/web_src/js/index.js
old mode 100644
new mode 100755
index 1c2ab7b2c..960191487
--- a/web_src/js/index.js
+++ b/web_src/js/index.js
@@ -21,6 +21,16 @@ import highlight from './features/highlight.js';
import ActivityTopAuthors from './components/ActivityTopAuthors.vue';
import {initNotificationsTable, initNotificationCount} from './features/notification.js';
import {createCodeEditor} from './features/codeeditor.js';
+import App from './App.vue'
+import router from './router'
+import uploader from 'vue-simple-uploader'
+
+Vue.use(uploader);
+
+//import './assets/css/iconfont.css'
+
+//Vue.config.productionTip = false
+
const {AppSubUrl, StaticUrlPrefix, csrf} = window.config;
@@ -2555,6 +2565,7 @@ $(document).ready(async () => {
initAdmin();
initCodeView();
initVueApp();
+ initVueUploader();
initTeamSettings();
initCtrlEnterSubmit();
initNavbarContentToggle();
@@ -3165,6 +3176,16 @@ function initVueApp() {
});
}
+function initVueUploader() {
+ /* eslint-disable no-new */
+ new Vue({
+ el: '#uploader',
+ router,
+ components: { App },
+ template: ''
+ });
+}
+
window.timeAddManual = function () {
$('.mini.modal')
.modal({
diff --git a/web_src/js/router/index.js b/web_src/js/router/index.js
new file mode 100755
index 000000000..19db41378
--- /dev/null
+++ b/web_src/js/router/index.js
@@ -0,0 +1,39 @@
+import Vue from 'vue'
+import Router from 'vue-router'
+import Uploader from '../components/Uploader.vue'
+import Chunk from '../components/Chunk.vue'
+import Md5 from '../components/Md5.vue'
+import Skip from '../components/Skip.vue'
+import Breakpoint from '../components/Breakpoint.vue'
+
+Vue.use(Router)
+
+export default new Router({
+ routes: [
+ {
+ path: '/',
+ name: 'uploader',
+ component: Uploader
+ },
+ {
+ path: '/chunk',
+ name: 'chunk',
+ component: Chunk
+ },
+ {
+ path: '/skip',
+ name: 'skip',
+ component: Skip
+ },
+ {
+ path: '/md5',
+ name: 'md5',
+ component: Md5
+ },
+ {
+ path: '/breakpoint',
+ name: 'breakpoint',
+ component: Breakpoint
+ },
+ ]
+})