Authored by 陈轩

add uploadImage api

  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 +};
  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;
  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'));