Authored by jinhu.tung

add upload image api

... ... @@ -18,5 +18,5 @@ module.exports = app => {
app.use('/editorial', require('./apps/editorial')); // 资讯
app.use('/product', require('./apps/product'));
app.use('/brand', require('./apps/brand')); // 品牌
app.use('/api', require('./apps/api')); // API
app.use('/api', require('./doraemon/api')); // API
};
... ...
/**
* sub app api
* sub app shopping
* @author: jinhu.dong<jinhu.dong@yoho.cn>
* @date: 2016/07/21
* @date: 2016/07/04
*/
var express = require('express'),
path = require('path'),
hbs = require('express-handlebars');
var express = require('express');
var app = express();
// set view engin
var doraemon = path.join(__dirname, '../../doraemon/views'); // parent view root
app.on('mount', function(parent) {
delete parent.locals.settings; // 不继承父 App 的设置
Object.assign(app.locals, parent.locals);
});
app.set('views', path.join(__dirname, 'views/action'));
app.engine('.hbs', hbs({
extname: '.hbs',
defaultLayout: 'layout',
layoutsDir: doraemon,
partialsDir: ['./views/partial', `${doraemon}/partial`],
helpers: 'helpers'
}));
console.log('api.............');
// router
app.use(require('./router'));
... ...
/**
* router of sub app api
* router of sub app shopping
* @author: jinhu.dong<jinhu.dong@yoho.cn>
* @date: 2016/07/21
* @date: 2016/07/04
*/
'use strict';
const router = require('express').Router(); // eslint-disable-line
const cRoot = './controllers';
const apiCtrl = require(`${cRoot}/api`);
const uploadApi = require('./upload/upload.js');
router.post('/uploadImg', apiCtrl.uploadImg);
router.post('/uploadImg', uploadApi.uploadImg);
module.exports = router;
... ...
/**
* 公共接口 controller
* 公共接口
* @author: jinhu.dong<jinhu.dong@yoho.cn>
* @date: 2016/07/21
*/
'use strict';
var requestPromise = require('request-promise');
var request = require('request');
var fs = require('fs');
const uploadImg = (req, res) => {
console.log('-----uploadImg:');
const getImgHost = function(url) {
let urlArr = url.split('/'),
domain = 'static.yhbimg.com/goodsimg',
num = urlArr[urlArr.length - 1].substr(1, 1),
url1 = domain + url;
if (num === 1) {
return 'http://img11.' + url1;
} else {
return 'http://img12.' + url1;
}
};
const uploadImg = (req, res) => {
let files, fileIndex;
let ret, imgs, datas;
let imgs, datas;
let flag;
let i = 0;
if (req.user.uid) {
console.log('req.files...', JSON.stringify(req.files));
console.log('req.body.bucket:', req.body.bucket);
files = [req.files.filename];
// 判断是单张传还是多张传
flag = Object.prototype.toString.call(files) === '[object Array]';
console.log('files...', files);
// 如果是单张,则数组化
if (!flag) {
files = [req.files.filename];
}
console.log('upload files....', files);
req.body.files = [];
req.body.fileNames = [];
... ... @@ -41,25 +47,22 @@ const uploadImg = (req, res) => {
req.body.fileNames[fileIndex] = files[fileIndex].name;
}
console.log('upload files path:', JSON.stringify(req.body.files));
console.log('upload files names:', JSON.stringify(req.body.fileNames));
if (req.body.bucket === 'goodsimg') {
requestPromise({
request.post({
url: 'http://upload.static.yohobuy.com',
method: 'POST',
body: {
formData: {
fileData: req.body.files,
project: req.body.bucket
}
}).then((error, httpResponse, rebody) => {
},
json: true
}, function(error, httpResponse, rebody) {
if (!error && httpResponse.statusCode === 200) {
ret = JSON.parse(rebody);
imgs = ret.data.imagesList || [];
imgs = rebody.data.imagesList || [];
datas = [];
// 生成图片绝对地址
for (i = 0; i < imgs.length; i++) {
// datas.push(Utils.joinImg(imgs[i]));
datas.push(getImgHost(imgs[i]));
}
}
... ...
... ... @@ -7,8 +7,11 @@
'use strict';
const router = require('express').Router(); // eslint-disable-line
const cRoot = './controllers';
// const cRoot = './controllers';
const apiCtrl = require(`${cRoot}/api`);
router.post('/uploadImg', apiCtrl.uploadImg);
module.exports = router;
... ...
... ... @@ -55,6 +55,7 @@
"passport-sina": "^0.1.0",
"passport-strategy": "1.x.x",
"passport-weixin": "^0.1.0",
"request": "^2.73.0",
"request-promise": "^3.0.0",
"serve-favicon": "^2.3.0",
"uuid": "^2.0.2",
... ...