Authored by 李靖

合并冲突

... ... @@ -10,4 +10,6 @@ packages/
.idea/
*.log
\ No newline at end of file
*.log
/uploads
\ No newline at end of file
... ...
const _ = require('lodash');
const moment = require('moment');
const path = require('path');
const fs = require('fs');
const shelljs = require('shelljs');
const decompress = require('decompress');
const decompressUnzip = require('decompress-unzip');
const Router = require('koa-router');
const router = new Router();
const file = {
page: async(ctx, next) => {
/**
* 文件管理页面
*/
page: async(ctx) => {
await ctx.render('/action/file_page');
},
/**
* 上传处理
*/
upload: async(ctx, next) => {
await ctx.render('/action/upload_page');
if ('POST' !== ctx.method) return await next();
const file = _.get(ctx, 'request.body._files.file');
const fileName = _.get(file, 'name');
const fileSaveFolder = path.join('./uploads', moment().format('YYYYMMDD').toString());
const fileSavePath = path.join(fileSaveFolder, fileName);
const fileDistPath = path.join(fileSaveFolder, 'dist');
shelljs.mkdir('-p', fileSaveFolder);
shelljs.mkdir('-p', fileDistPath);
const readable = fs.createReadStream(file.path);
const writable = fs.createWriteStream(fileSavePath);
readable.pipe(writable);
await readable.on('end', () => {
decompress(fileSavePath, fileDistPath, {
plugins: [
decompressUnzip()
]
}).then(() => {
console.log('Files decompressed');
});
});
}
}
router.get('/page', file.page);
router.post('/upload', file.upload);
module.exports = router;
... ...
... ... @@ -17,21 +17,33 @@
<div class="contentpanel">
<div class="row">
<div class="col-md-12">
<form class="form-inline">
<div class="col-md-5">
<div class="form-group col-md-12">
<label class="sr-only">上传地址</label>
<div class="input-group col-md-12">
<div class="input-group-addon">上传地址:http://localhost:9000</div>
<input type="text" class="form-control" placeholder="例:/files/page">
</div>
</div>
</div>
<div class="col-md-7">
<button type="file" class="btn btn-primary">选择文件</button>
<button type="file" class="btn btn-primary">上传文件</button>
</div>
<form enctype="multipart/form-data">
<input type="file" name="file" id="fileInput">
<button id="upload">上传</button>
</form>
</div>
</div>
</div>
<script>
$('#upload').on('click', function() {
var formData = new FormData();
var file = $('#fileInput').prop('files')[0];
formData.append('file', file);
$.ajax({
type: 'POST',
url: '/files/upload',
cache: false,
data: formData,
dataType: 'json',
processData: false,
contentType: false,
success: function(result) {
console.log(result);
}
});
});
</script>
... ...
... ... @@ -29,6 +29,8 @@
"bluebird": "^3.5.0",
"co": "^4.6.0",
"co-body": "^4.2.0",
"decompress": "^4.2.0",
"decompress-unzip": "^4.0.1",
"formidable": "^1.0.17",
"fs-promise": "^0.5.0",
"fstream": "^1.0.9",
... ... @@ -56,6 +58,7 @@
"node-zookeeper-client": "^0.2.2",
"nodemailer": "^3.1.8",
"npm": "^3.10.9",
"path": "^0.12.7",
"promise-mysql": "^3.0.1",
"qcloudapi-sdk": "^0.1.5",
"qn": "^1.3.0",
... ...
... ... @@ -238,6 +238,10 @@ base64-arraybuffer@0.1.5:
version "0.1.5"
resolved "http://registry.npm.taobao.org/base64-arraybuffer/download/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8"
base64-js@0.0.8:
version "0.0.8"
resolved "http://npm.yoho.cn/base64-js/-/base64-js-0.0.8.tgz#1101e9544f4a76b1bc3b26d452ca96d7a35e7978"
base64id@0.1.0:
version "0.1.0"
resolved "http://registry.npm.taobao.org/base64id/download/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f"
... ... @@ -272,6 +276,12 @@ binary-search-tree@0.2.5:
dependencies:
underscore "~1.4.4"
bl@^1.0.0:
version "1.2.1"
resolved "http://npm.yoho.cn/bl/-/bl-1.2.1.tgz#cac328f7bee45730d404b692203fcb590e172d5e"
dependencies:
readable-stream "^2.0.5"
bl@~1.1.2:
version "1.1.2"
resolved "http://registry.npm.taobao.org/bl/download/bl-1.1.2.tgz#fdca871a99713aa00d19e3bbba41c44787a65398"
... ... @@ -352,6 +362,10 @@ buffer-concat@~0.0.1:
version "0.0.1"
resolved "http://registry.npm.taobao.org/buffer-concat/download/buffer-concat-0.0.1.tgz#43e1e3c77f3d22fb55bea6890a92d03778c4c10a"
buffer-crc32@~0.2.3:
version "0.2.13"
resolved "http://npm.yoho.cn/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
buffer-shims@^1.0.0:
version "1.0.0"
resolved "http://registry.npm.taobao.org/buffer-shims/download/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
... ... @@ -360,6 +374,14 @@ buffer-type@^0.0.2:
version "0.0.2"
resolved "http://registry.npm.taobao.org/buffer-type/download/buffer-type-0.0.2.tgz#8a0bbcbe786049af8b436a636b9b50525fe26ca3"
buffer@^3.0.1:
version "3.6.0"
resolved "http://npm.yoho.cn/buffer/-/buffer-3.6.0.tgz#a72c936f77b96bf52f5f7e7b467180628551defb"
dependencies:
base64-js "0.0.8"
ieee754 "^1.1.4"
isarray "^1.0.0"
builtin-modules@^1.0.0:
version "1.1.1"
resolved "http://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
... ... @@ -562,6 +584,12 @@ commander@~2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563"
commander@~2.8.1:
version "2.8.1"
resolved "http://npm.yoho.cn/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
dependencies:
graceful-readlink ">= 1.0.0"
component-bind@1.0.0:
version "1.0.0"
resolved "http://registry.npm.taobao.org/component-bind/download/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
... ... @@ -751,6 +779,54 @@ decamelize@^1.0.0, decamelize@^1.1.1:
version "1.2.0"
resolved "http://registry.npm.taobao.org/decamelize/download/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
version "4.1.1"
resolved "http://npm.yoho.cn/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
dependencies:
file-type "^5.2.0"
is-stream "^1.1.0"
tar-stream "^1.5.2"
decompress-tarbz2@^4.0.0:
version "4.1.1"
resolved "http://npm.yoho.cn/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
dependencies:
decompress-tar "^4.1.0"
file-type "^6.1.0"
is-stream "^1.1.0"
seek-bzip "^1.0.5"
unbzip2-stream "^1.0.9"
decompress-targz@^4.0.0:
version "4.1.1"
resolved "http://npm.yoho.cn/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
dependencies:
decompress-tar "^4.1.1"
file-type "^5.2.0"
is-stream "^1.1.0"
decompress-unzip@^4.0.1:
version "4.0.1"
resolved "http://npm.yoho.cn/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
dependencies:
file-type "^3.8.0"
get-stream "^2.2.0"
pify "^2.3.0"
yauzl "^2.4.2"
decompress@^4.2.0:
version "4.2.0"
resolved "http://npm.yoho.cn/decompress/-/decompress-4.2.0.tgz#7aedd85427e5a92dacfe55674a7c505e96d01f9d"
dependencies:
decompress-tar "^4.0.0"
decompress-tarbz2 "^4.0.0"
decompress-targz "^4.0.0"
decompress-unzip "^4.0.1"
graceful-fs "^4.1.10"
make-dir "^1.0.0"
pify "^2.3.0"
strip-dirs "^2.0.0"
deep-equal@^1.0.0, deep-equal@~1.0.0, deep-equal@~1.0.1:
version "1.0.1"
resolved "http://registry.npm.taobao.org/deep-equal/download/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
... ... @@ -851,6 +927,12 @@ ee-first@1.1.1:
version "1.1.1"
resolved "http://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
end-of-stream@^1.0.0:
version "1.4.0"
resolved "http://npm.yoho.cn/end-of-stream/-/end-of-stream-1.4.0.tgz#7a90d833efda6cfa6eac0f4949dbb0fad3a63206"
dependencies:
once "^1.4.0"
engine.io-client@1.7.2:
version "1.7.2"
resolved "http://registry.npm.taobao.org/engine.io-client/download/engine.io-client-1.7.2.tgz#12f01d3d9d676908a86339cee067ff799a585c3d"
... ... @@ -1054,6 +1136,24 @@ fast-deep-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz#96256a3bc975595eb36d82e9929d060d893439ff"
fd-slicer@~1.0.1:
version "1.0.1"
resolved "http://npm.yoho.cn/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
dependencies:
pend "~1.2.0"
file-type@^3.8.0:
version "3.9.0"
resolved "http://npm.yoho.cn/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
file-type@^5.2.0:
version "5.2.0"
resolved "http://npm.yoho.cn/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
file-type@^6.1.0:
version "6.2.0"
resolved "http://npm.yoho.cn/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
filename-regex@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
... ... @@ -1283,6 +1383,13 @@ get-caller-file@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
get-stream@^2.2.0:
version "2.3.1"
resolved "http://npm.yoho.cn/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
dependencies:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
get-stream@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
... ... @@ -1354,7 +1461,7 @@ got@^6.7.1:
unzip-response "^2.0.1"
url-parse-lax "^1.0.0"
graceful-fs@^4.1.11:
graceful-fs@^4.1.10, graceful-fs@^4.1.11:
version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
... ... @@ -1532,6 +1639,10 @@ iconv-lite@0.4.13, iconv-lite@^0.4.13:
version "0.4.13"
resolved "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
ieee754@^1.1.4:
version "1.1.8"
resolved "http://npm.yoho.cn/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
iferr@^0.1.5, iferr@~0.1.5:
version "0.1.5"
resolved "http://registry.npm.taobao.org/iferr/download/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
... ... @@ -1707,6 +1818,10 @@ is-nan@^1.2.1:
dependencies:
define-properties "^1.1.1"
is-natural-number@^4.0.1:
version "4.0.1"
resolved "http://npm.yoho.cn/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
is-npm@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4"
... ... @@ -1773,7 +1888,7 @@ isarray@0.0.1:
version "0.0.1"
resolved "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
isarray@1.0.0, isarray@~1.0.0:
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
... ... @@ -2676,7 +2791,7 @@ on-finished@^2.1.0:
dependencies:
ee-first "1.1.1"
once@^1.3.0, once@^1.3.3, once@~1.4.0:
once@^1.3.0, once@^1.3.3, once@^1.4.0, once@~1.4.0:
version "1.4.0"
resolved "http://registry.npm.taobao.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
... ... @@ -2842,12 +2957,23 @@ path-type@^1.0.0:
pify "^2.0.0"
pinkie-promise "^2.0.0"
path@^0.12.7:
version "0.12.7"
resolved "http://npm.yoho.cn/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f"
dependencies:
process "^0.11.1"
util "^0.10.3"
pause-stream@0.0.11, pause-stream@~0.0.11:
version "0.0.11"
resolved "http://registry.npm.taobao.org/pause-stream/download/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445"
dependencies:
through "~2.3"
pend@~1.2.0:
version "1.2.0"
resolved "http://npm.yoho.cn/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
performance-now@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
... ... @@ -2894,6 +3020,10 @@ process-nextick-args@~1.0.6:
version "1.0.7"
resolved "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
process@^0.11.1:
version "0.11.10"
resolved "http://npm.yoho.cn/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
promise-mysql@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/promise-mysql/-/promise-mysql-3.0.2.tgz#356e22511c2fa5193c6a4ef187ccec8e4eab7161"
... ... @@ -3060,7 +3190,7 @@ read@1, read@~1.0.1, read@~1.0.7:
string_decoder "~0.10.x"
util-deprecate "~1.0.1"
readable-stream@2, readable-stream@2.3.3, readable-stream@^2.0.5, readable-stream@^2.1.4:
readable-stream@2, readable-stream@2.3.3, readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.1.4:
version "2.3.3"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
dependencies:
... ... @@ -3396,6 +3526,12 @@ safe-buffer@5.1.1, safe-buffer@^5.0.1, safe-buffer@^5.1.1, safe-buffer@~5.1.0, s
version "5.1.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
seek-bzip@^1.0.5:
version "1.0.5"
resolved "http://npm.yoho.cn/seek-bzip/-/seek-bzip-1.0.5.tgz#cfe917cb3d274bcffac792758af53173eb1fabdc"
dependencies:
commander "~2.8.1"
semver-diff@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36"
... ... @@ -3699,6 +3835,12 @@ strip-bom@^2.0.0:
dependencies:
is-utf8 "^0.2.0"
strip-dirs@^2.0.0:
version "2.0.0"
resolved "http://npm.yoho.cn/strip-dirs/-/strip-dirs-2.0.0.tgz#610cdb2928200da0004f41dcb90fc95cd919a0b6"
dependencies:
is-natural-number "^4.0.1"
strip-eof@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
... ... @@ -3763,6 +3905,15 @@ tar-pack@^3.4.0:
tar "^2.2.1"
uid-number "^0.0.6"
tar-stream@^1.5.2:
version "1.5.4"
resolved "http://npm.yoho.cn/tar-stream/-/tar-stream-1.5.4.tgz#36549cf04ed1aee9b2a30c0143252238daf94016"
dependencies:
bl "^1.0.0"
end-of-stream "^1.0.0"
readable-stream "^2.0.0"
xtend "^4.0.0"
tar@^2.0.0, tar@^2.2.1, tar@~2.2.1:
version "2.2.1"
resolved "http://registry.npm.taobao.org/tar/download/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
... ... @@ -3800,7 +3951,7 @@ through2@^0.6.2, through2@^0.6.5:
readable-stream ">=1.0.33-1 <1.1.0-0"
xtend ">=4.0.0 <4.1.0-0"
through@2, through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.8:
through@2, through@^2.3.6, through@~2.3, through@~2.3.1, through@~2.3.4, through@~2.3.8:
version "2.3.8"
resolved "http://registry.npm.taobao.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
... ... @@ -3880,6 +4031,13 @@ umask@~1.1.0:
version "1.1.0"
resolved "http://registry.npm.taobao.org/umask/download/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d"
unbzip2-stream@^1.0.9:
version "1.2.5"
resolved "http://npm.yoho.cn/unbzip2-stream/-/unbzip2-stream-1.2.5.tgz#73a033a567bbbde59654b193c44d48a7e4f43c47"
dependencies:
buffer "^3.0.1"
through "^2.3.6"
undefsafe@0.0.3:
version "0.0.3"
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-0.0.3.tgz#ecca3a03e56b9af17385baac812ac83b994a962f"
... ... @@ -3962,6 +4120,12 @@ util-extend@^1.0.1:
version "1.0.3"
resolved "http://registry.npm.taobao.org/util-extend/download/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f"
util@^0.10.3:
version "0.10.3"
resolved "http://npm.yoho.cn/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
dependencies:
inherits "2.0.1"
utility@0.1.11:
version "0.1.11"
resolved "http://registry.npm.taobao.org/utility/download/utility-0.1.11.tgz#fde60cf9b4e4751947a0cf5d104ce29367226715"
... ... @@ -4183,6 +4347,13 @@ yargs@~3.10.0:
decamelize "^1.0.0"
window-size "0.1.0"
yauzl@^2.4.2:
version "2.8.0"
resolved "http://npm.yoho.cn/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2"
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.0.1"
yeast@0.1.2:
version "0.1.2"
resolved "http://registry.npm.taobao.org/yeast/download/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
... ...