|
|
'use strict';
|
|
|
|
|
|
const request = require('request-promise');
|
|
|
const fs = require('fs');
|
|
|
const _ = require('lodash');
|
|
|
|
|
|
const utils = require('../models/utils');
|
|
|
const yohoApi = global.yoho.API;
|
|
|
|
|
|
const AllowedBucket = {
|
|
|
sns: 'sns',
|
|
|
evidenceImages: 'evidenceImages'
|
|
|
};
|
|
|
|
|
|
const uploadImg = (req, res, next) => {
|
|
|
let files = req.files && req.files.file || [];
|
...
|
...
|
@@ -16,7 +21,6 @@ const uploadImg = (req, res, next) => { |
|
|
|
|
|
req.body.files = [];
|
|
|
files.forEach(file => {
|
|
|
|
|
|
let types = file.type.split('/');
|
|
|
|
|
|
if (!types || types[0] !== 'image') {
|
...
|
...
|
@@ -27,7 +31,6 @@ const uploadImg = (req, res, next) => { |
|
|
errTip = '上传文件尺寸太大!';
|
|
|
}
|
|
|
req.body.files.push(fs.createReadStream(file.path));
|
|
|
req.body.files.push(file.name);
|
|
|
});
|
|
|
|
|
|
if (errTip) {
|
...
|
...
|
@@ -36,24 +39,42 @@ const uploadImg = (req, res, next) => { |
|
|
});
|
|
|
}
|
|
|
|
|
|
request({
|
|
|
method: 'post',
|
|
|
url: 'http://upload.static.yohobuy.com',
|
|
|
formData: {
|
|
|
fileData: req.body.files,
|
|
|
project: req.body.bucket
|
|
|
},
|
|
|
json: true
|
|
|
}).then(function(result) {
|
|
|
|
|
|
if (result && result.code === 200) {
|
|
|
result.data = result.data || {};
|
|
|
result.data.images = _.map(_.get(result, 'data.imagesList'), (it) => {
|
|
|
return utils.getUploadImgAbsoluteUrl(it, req.body.bucket);
|
|
|
const bucket = AllowedBucket[req.body.bucket];
|
|
|
|
|
|
if (!bucket) {
|
|
|
return res.json({
|
|
|
code: 400,
|
|
|
message: '参数错误'
|
|
|
});
|
|
|
}
|
|
|
|
|
|
Promise.all(
|
|
|
req.body.files.map(f => {
|
|
|
return yohoApi.postFile('', {
|
|
|
bucket: req.body.bucket,
|
|
|
file: f,
|
|
|
uid: req.user.uid.toString(),
|
|
|
method: 'yoho.fileupload'
|
|
|
}).then(result => {
|
|
|
if (result.code !== 200) {
|
|
|
return Promise.reject(Error('上传出错'));
|
|
|
}
|
|
|
|
|
|
return result;
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
).then(result => {
|
|
|
const data = result.reduce((t, r) => {
|
|
|
t.images.push(utils.getUploadImgAbsoluteUrl(_.get(r, 'data'), req.body.bucket));
|
|
|
t.imagesList.push(_.get(r, 'data'));
|
|
|
return t;
|
|
|
}, { images: [], imagesList: [] });
|
|
|
|
|
|
res.json(result);
|
|
|
res.json({
|
|
|
code: 200,
|
|
|
data,
|
|
|
message: '上传成功'
|
|
|
});
|
|
|
}).catch(next);
|
|
|
};
|
|
|
|
...
|
...
|
|