fix bug & add remove plugin
This commit is contained in:
parent
0b66a5092b
commit
cb2105a07d
11
.jsbeautifyrc
Normal file
11
.jsbeautifyrc
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"indent_size": 2,
|
||||
"indent_char": " ",
|
||||
"other": " ",
|
||||
"indent_level": 0,
|
||||
"indent_with_tabs": false,
|
||||
"preserve_newlines": true,
|
||||
"max_preserve_newlines": 2,
|
||||
"jslint_happy": true,
|
||||
"indent_handlebars": true
|
||||
}
|
10
README.md
10
README.md
@ -151,7 +151,7 @@ $ docker run -itd -p 80:80 -p 443:443 -v `pwd`/nginx_config:/etc/nginx/conf.d ng
|
||||
> 引入插件的版本将会持续更新
|
||||
|
||||
引入的插件:
|
||||
`koa@2 koa-body@2 koa-router@next koa-session2 koa-static2 koa-compose koa-multer require-directory babel-cli babel-register babel-plugin-transform-runtime babel-preset-es2015 babel-preset-stage-2 gulp gulp-eslint eslint eslint-config-standard eslint-friendly-formatter eslint-plugin-html eslint-plugin-promise nodemailer promise-mysql`
|
||||
`koa@2 koa-body@2 koa-router@next koa-session2 koa-static2 koa-compose require-directory babel-cli babel-register babel-plugin-transform-runtime babel-preset-es2015 babel-preset-stage-2 gulp gulp-eslint eslint eslint-config-standard eslint-friendly-formatter eslint-plugin-html eslint-plugin-promise nodemailer promise-mysql`
|
||||
|
||||
**koa2**: HTTP框架
|
||||
Synopsis: HTTP framework.
|
||||
@ -177,10 +177,6 @@ $ docker run -itd -p 80:80 -p 443:443 -v `pwd`/nginx_config:/etc/nginx/conf.d ng
|
||||
Synopsis: Compose several middleware into one.
|
||||
From: https://github.com/koajs/compose
|
||||
|
||||
**koa-multer**: 处理数据中间件
|
||||
Synopsis: Multer is a node.js middleware for handling multipart/form-data for koa.
|
||||
From: https://github.com/koa-modules/multer
|
||||
|
||||
**require-directory**: 递归遍历指定目录
|
||||
Synopsis: Recursively iterates over specified directory.
|
||||
From: https://github.com/troygoode/node-require-directory
|
||||
@ -270,6 +266,10 @@ HTTP2推送中间件:https://github.com/silenceisgolden/koa-server-push
|
||||
**koa-onerror**:
|
||||
Koa的错误拦截中间件,需要配合上面的插件使用:https://github.com/koajs/onerror
|
||||
|
||||
**koa-multer**: 处理数据中间件
|
||||
Synopsis: Multer is a node.js middleware for handling multipart/form-data for koa.
|
||||
From: https://github.com/koa-modules/multer
|
||||
|
||||
目录结构说明
|
||||
------------
|
||||
|
||||
|
@ -13,7 +13,6 @@
|
||||
"koa": "^2.0.0",
|
||||
"koa-body": "^2.0.0",
|
||||
"koa-compose": "^2.5.1",
|
||||
"koa-multer": "^1.0.1",
|
||||
"koa-router": "^7.0.1",
|
||||
"koa-session2": "^1.0.8",
|
||||
"koa-static2": "^0.1.8",
|
||||
|
49
src/app.js
49
src/app.js
@ -2,7 +2,9 @@ import Koa2 from 'koa'
|
||||
import KoaBody from 'koa-body'
|
||||
import KoaSession from 'koa-session2'
|
||||
import KoaStatic from 'koa-static2'
|
||||
import { SystemConfig } from './config'
|
||||
import {
|
||||
SystemConfig
|
||||
} from './config'
|
||||
import path from 'path'
|
||||
import MainRoutes from './routes/main-routes'
|
||||
import ErrorRoutes from './routes/error-routes'
|
||||
@ -11,26 +13,31 @@ import ErrorRoutes from './routes/error-routes'
|
||||
const app = new Koa2()
|
||||
const env = process.env.NODE_ENV || 'development' // Current mode
|
||||
|
||||
app.use(KoaBody({
|
||||
multipart: true,
|
||||
strict: false
|
||||
// formidable: {uploadDir: path.join(__dirname, '../../../assets/uploads/')}
|
||||
})) // Processing request
|
||||
.use(KoaStatic('assets', path.resolve(__dirname, '../assets'))) // Static resource
|
||||
.use(KoaSession({key: SystemConfig.Session_Key})) // Set Session
|
||||
// .use(PluginLoader(SystemConfig.System_plugin_path))
|
||||
.use((ctx, next) => {
|
||||
if (ctx.request.header.host.split(':')[0] === 'api.XXX.com' || ctx.request.header.host.split(':')[0] === '127.0.0.1') {
|
||||
ctx.set('Access-Control-Allow-Origin', '*')
|
||||
ctx.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
|
||||
ctx.set('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')
|
||||
ctx.set('Access-Control-Allow-Credentials', true) // 允许带上 cookie
|
||||
}
|
||||
return next()
|
||||
})
|
||||
.use(MainRoutes.routes())
|
||||
.use(MainRoutes.allowedMethods())
|
||||
.use(ErrorRoutes())
|
||||
app
|
||||
.use(KoaBody({
|
||||
multipart: true,
|
||||
strict: false,
|
||||
formidable: {
|
||||
uploadDir: path.join(__dirname, '../assets/uploads')
|
||||
}
|
||||
})) // Processing request
|
||||
.use(KoaStatic('assets', path.resolve(__dirname, '../assets'))) // Static resource
|
||||
.use(KoaSession({
|
||||
key: SystemConfig.Session_Key
|
||||
})) // Set Session
|
||||
// .use(PluginLoader(SystemConfig.System_plugin_path))
|
||||
.use((ctx, next) => {
|
||||
if (ctx.request.header.host.split(':')[0] === 'api.XXX.com' || ctx.request.header.host.split(':')[0] === '127.0.0.1') {
|
||||
ctx.set('Access-Control-Allow-Origin', '*')
|
||||
ctx.set('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
|
||||
ctx.set('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')
|
||||
ctx.set('Access-Control-Allow-Credentials', true) // 允许带上 cookie
|
||||
}
|
||||
return next()
|
||||
})
|
||||
.use(MainRoutes.routes())
|
||||
.use(MainRoutes.allowedMethods())
|
||||
.use(ErrorRoutes())
|
||||
|
||||
if (env === 'development') { // logger
|
||||
app.use((ctx, next) => {
|
||||
|
@ -1,35 +1,3 @@
|
||||
import multer from 'koa-multer'
|
||||
import path from 'path'
|
||||
|
||||
/***
|
||||
* 说明:该方法只支持:`multipart/form-data`方式的上传。postman可以调试。
|
||||
*/
|
||||
|
||||
let storage = multer.diskStorage({
|
||||
// 设置上传后文件路径
|
||||
destination: function (req, file, cb) {
|
||||
cb(null, path.join(__dirname, '../../../assets/uploads/'))
|
||||
},
|
||||
// 给上传文件重命名,获取添加后缀名
|
||||
filename: function (req, file, cb) {
|
||||
let fileFormat = (file.originalname).split('.')
|
||||
cb(null, Date.now() + '.' + fileFormat[fileFormat.length - 1])
|
||||
}
|
||||
})
|
||||
|
||||
export let upload = multer({
|
||||
storage: storage,
|
||||
// dest: 'uploads/', //上传文件保存的路径,如果你想在上传时进行更多的控制, 你可以使用storage选项替代dest. Multer 具有 DiskStorage 和 MemoryStorage 两个存储引擎; 另外还可以从第三方获得更多可用的引擎.
|
||||
// fileFilter: function (req, file, cb) {
|
||||
// let mimetypes = (['text/*', 'image/*', 'video/*', 'audio/*', 'application/zip']).join(',');
|
||||
// let testItems = file.mimetype.split('/');
|
||||
// if ((new RegExp('\b' + testItems[0] + '/\*', 'i')).test(mimetypes) || (new RegExp('\*/' + testItems[1] + '\b', 'i')).test(mimetypes) || (new RegExp('\b' + testItems[0] + '/' + testItems[1] + '\b', 'i')).test(mimetypes)) {
|
||||
// cb(null, true);
|
||||
// } else {
|
||||
// return cb(new Error('Only image, plain text, audio, video and zip format files are allowed!'), false);
|
||||
// }
|
||||
// }, // fileFilter要在这里声明才行,用instance.fileFilter = funciton(){};是不管用的,
|
||||
limits: {
|
||||
fileSize: 200 * 1024 * 1024 // Max file size in bytes (20 MB) 限制上传的文件大小,不设置则是无限
|
||||
}
|
||||
})
|
||||
export default (ctx) => {
|
||||
ctx.body = ctx.request.body
|
||||
}
|
||||
|
@ -7,14 +7,7 @@ router
|
||||
.get('/', function (ctx, next) {
|
||||
ctx.body = '禁止访问!'
|
||||
}) // HOME 路由
|
||||
.all('/upload', controllers.upload.upload.array('file'), function (ctx, next) { // 上传到本地示例
|
||||
return new Promise(function (resolve, reject) {
|
||||
// 允许跨域,正式环境要改为对应域名
|
||||
ctx.set('Access-Control-Allow-Origin', '*')
|
||||
// ctx.req.files.filename = ctx.req.files.path
|
||||
resolve(ctx.body = ctx.req.files)
|
||||
})
|
||||
})
|
||||
.all('/upload', controllers.upload.default)
|
||||
.get('/api/:name', controllers.api.Get)
|
||||
.post('/api/:name', controllers.api.Post)
|
||||
.put('/api/:name', controllers.api.Put)
|
||||
|
Loading…
Reference in New Issue
Block a user