|
|
'use strict';
|
|
|
|
|
|
const CDNCONFIG = require('../../../config/cdn_config');
|
|
|
const _ = require('lodash');
|
|
|
const moment = require('moment');
|
|
|
const Router = require('koa-router');
|
|
|
const fs = require('fs');
|
|
|
const path = require('path');
|
|
|
const router = new Router();
|
|
|
const FileApi = require('../../ci/file');
|
|
|
const CDNCONFIG = require('../../../config/cdn_config');
|
|
|
const qn = require('../../../lib/qiniu')(CDNCONFIG.feature);
|
|
|
const qnFeature = require('../../../lib/qiniu')(CDNCONFIG.feature);
|
|
|
|
|
|
/**
|
|
|
* 处理列表数据
|
...
|
...
|
@@ -18,25 +20,18 @@ const _handleListItems = items => { |
|
|
let dateTime = _.parseInt(perFile.putTime.toString().substring(0, 13));
|
|
|
|
|
|
perFile.putTimeFormat = moment(dateTime).format('YYYY-MM-DD HH:mm');
|
|
|
perFile.link = _.get(CDNCONFIG, 'feature.origin') + '/' + perFile.key;
|
|
|
perFile.link = _.get(CDNCONFIG.feature, 'origin') + '/' + perFile.key;
|
|
|
});
|
|
|
|
|
|
return items;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 校验是否是允许上传的文件包
|
|
|
*/
|
|
|
const _verifyFiles = filesList => {
|
|
|
return true;
|
|
|
};
|
|
|
|
|
|
const file = {
|
|
|
/**
|
|
|
* 文件管理页面
|
|
|
*/
|
|
|
page: async(ctx) => {
|
|
|
await ctx.render('/action/file_page', {domain: _.get(CDNCONFIG, 'feature.origin')});
|
|
|
await ctx.render('/action/file_page', {domain: _.get(CDNCONFIG.feature, 'origin')});
|
|
|
},
|
|
|
|
|
|
/**
|
...
|
...
|
@@ -68,7 +63,7 @@ const file = { |
|
|
params.marker = ctx.query.marker;
|
|
|
}
|
|
|
|
|
|
let result = await qn.listAsync(params);
|
|
|
let result = await qnFeature.listAsync(params);
|
|
|
let finalResult = {
|
|
|
items: _handleListItems(result.items)
|
|
|
};
|
...
|
...
|
@@ -116,6 +111,66 @@ const file = { |
|
|
message: '处理完毕',
|
|
|
data: {}
|
|
|
};
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
* 单文件上传页面
|
|
|
*/
|
|
|
singleFile: async(ctx) => {
|
|
|
await ctx.render('/action/single_file_page', {domain: _.get(CDNCONFIG.main, 'origin')});
|
|
|
},
|
|
|
|
|
|
/**
|
|
|
* 单文件上传处理
|
|
|
*/
|
|
|
singleFileUpload: async(ctx, next) => {
|
|
|
if ('POST' !== ctx.method) return await next();
|
|
|
|
|
|
let file = _.get(ctx, 'request.body._files.file');
|
|
|
let actPath = _.get(ctx, 'request.body.actPath');
|
|
|
let cover = _.get(ctx, 'request.body.cover') === 'yes'; // 是否覆盖
|
|
|
let filePath = path.join(actPath, _.get(file, 'name'));
|
|
|
|
|
|
if (!file) {
|
|
|
return ctx.body = {
|
|
|
code: 400,
|
|
|
message: '没有接收到上传的文件'
|
|
|
};
|
|
|
}
|
|
|
|
|
|
if (!actPath) {
|
|
|
return ctx.body = {
|
|
|
code: 400,
|
|
|
message: '请指定上传路径'
|
|
|
};
|
|
|
}
|
|
|
|
|
|
let readable = fs.createReadStream(file.path);
|
|
|
let config = CDNCONFIG.main;
|
|
|
|
|
|
if (cover) {
|
|
|
_.assign(CDNCONFIG.main, {
|
|
|
key: filePath
|
|
|
});
|
|
|
}
|
|
|
|
|
|
let qnMain = require('../../../lib/qiniu')(config);
|
|
|
let upResult = await qnMain.uploadAsync(readable, {key: filePath});
|
|
|
|
|
|
if (upResult && upResult.url) {
|
|
|
return ctx.body = {
|
|
|
code: 200,
|
|
|
message: '上传完毕',
|
|
|
data: {
|
|
|
url: upResult.url
|
|
|
}
|
|
|
};
|
|
|
} else {
|
|
|
return ctx.body = {
|
|
|
code: 400,
|
|
|
message: '上传失败,请重试'
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
...
|
...
|
@@ -123,5 +178,7 @@ router.get('/page', file.page); |
|
|
router.get('/listlogs', file.listLogs);
|
|
|
router.get('/listfiles', file.listFiles);
|
|
|
router.post('/upload', file.upload);
|
|
|
router.get('/single-file', file.singleFile);
|
|
|
router.post('/single-file-upload', file.singleFileUpload);
|
|
|
|
|
|
module.exports = router; |
...
|
...
|
|