Showing
4 changed files
with
94 additions
and
0 deletions
apps/api/controllers/upload.js
0 → 100644
1 | +/** | ||
2 | + * 上传接口 | ||
3 | + * @author: kai.bi<kai.bi@yoho.cn> | ||
4 | + * @date: 2016/07/22 | ||
5 | + */ | ||
6 | + | ||
7 | +'use strict'; | ||
8 | + | ||
9 | +const request = require('request-promise'); | ||
10 | +const fs = require('fs'); | ||
11 | +const _ = require('lodash'); | ||
12 | + | ||
13 | +const uploadImg = (req, res, next) => { | ||
14 | + let files = req.files && req.files.filename || []; | ||
15 | + | ||
16 | + if (!_.isArray(files)) { | ||
17 | + files = [files]; | ||
18 | + } | ||
19 | + | ||
20 | + req.body.files = []; | ||
21 | + files.forEach(file => { | ||
22 | + req.body.files.push(fs.createReadStream(file.path)); | ||
23 | + req.body.files.push(file.name); | ||
24 | + }); | ||
25 | + | ||
26 | + request({ | ||
27 | + method: 'post', | ||
28 | + url: 'http://upload.static.yohobuy.com', | ||
29 | + formData: { | ||
30 | + fileData: req.body.files, | ||
31 | + project: req.body.bucket || 'goodsimg' | ||
32 | + }, | ||
33 | + json: true | ||
34 | + }).then(function(result) { | ||
35 | + res.json(result); | ||
36 | + }).catch(next); | ||
37 | +}; | ||
38 | + | ||
39 | +module.exports = { | ||
40 | + uploadImg | ||
41 | +}; |
apps/api/index.js
0 → 100644
1 | +/** | ||
2 | + * sub app api | ||
3 | + * @author: 陈轩<xuan.chen@yoho.cn> | ||
4 | + * @date: 2016/09/02 | ||
5 | + */ | ||
6 | + | ||
7 | +var express = require('express'), | ||
8 | + path = require('path'), | ||
9 | + hbs = require('express-handlebars'); | ||
10 | + | ||
11 | +var app = express(); | ||
12 | + | ||
13 | +// set view engin | ||
14 | +var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root | ||
15 | + | ||
16 | +app.on('mount', function(parent) { | ||
17 | + delete parent.locals.settings; // 不继承父 App 的设置 | ||
18 | + Object.assign(app.locals, parent.locals); | ||
19 | +}); | ||
20 | + | ||
21 | +app.set('views', path.join(__dirname, 'views/action')); | ||
22 | +app.engine('.hbs', hbs({ | ||
23 | + extname: '.hbs', | ||
24 | + defaultLayout: 'layout', | ||
25 | + layoutsDir: doraemon, | ||
26 | + partialsDir: [path.join(__dirname, 'views/partial'), `${doraemon}/partial`], | ||
27 | + helpers: global.yoho.helpers | ||
28 | +})); | ||
29 | + | ||
30 | +// router | ||
31 | +app.use(require('./router')); | ||
32 | + | ||
33 | +module.exports = app; |
apps/api/router.js
0 → 100644
1 | +/** | ||
2 | + * router of sub app api | ||
3 | + * @author: 陈轩<xuan.chen@yoho.cn> | ||
4 | + * @date: 2016/09/02 | ||
5 | + */ | ||
6 | + | ||
7 | +'use strict'; | ||
8 | + | ||
9 | +const router = require('express').Router(); // eslint-disable-line | ||
10 | +const cRoot = './controllers'; | ||
11 | + | ||
12 | +var multipart = require('connect-multiparty'); | ||
13 | +var multipartMiddleware = multipart(); | ||
14 | + | ||
15 | +const uploadApi = require(cRoot + '/upload.js'); | ||
16 | + | ||
17 | +router.post('/upload/image', multipartMiddleware, uploadApi.uploadImg); | ||
18 | + | ||
19 | +module.exports = router; |
@@ -13,6 +13,7 @@ module.exports = app => { | @@ -13,6 +13,7 @@ module.exports = app => { | ||
13 | app.use(require('./apps/passport')); | 13 | app.use(require('./apps/passport')); |
14 | 14 | ||
15 | // 业务模块 | 15 | // 业务模块 |
16 | + app.use('/api', require('./apps/api')); // 各模块公有 API | ||
16 | app.use('/product', require('./apps/product')); | 17 | app.use('/product', require('./apps/product')); |
17 | app.use('/guang', require('./apps/guang')); | 18 | app.use('/guang', require('./apps/guang')); |
18 | app.use('/activity', require('./apps/activity')); | 19 | app.use('/activity', require('./apps/activity')); |
-
Please register or login to post a comment