|
|
/**
|
|
|
* 文件相关controller
|
|
|
* @author: feng.chen<feng.chen@yoho.cn>
|
|
|
* @date: 2017/04/13
|
|
|
*/
|
|
|
'use strict';
|
|
|
|
|
|
const Context = require('../common/context');
|
|
|
const FileService = require('../service/file-service');
|
|
|
const Api = require('../common/api');
|
|
|
const fs = require('fs');
|
|
|
const _ = require('lodash');
|
|
|
|
|
|
class FileController extends Context {
|
|
|
constructor() {
|
|
|
super();
|
|
|
this.api = this.instance(Api);
|
|
|
this.fileService = this.instance(FileService);
|
|
|
}
|
|
|
uploadImage(req, res, next) {
|
|
|
let files = req.files && req.files.file || [];
|
|
|
let errTip = null;
|
|
|
|
|
|
if (!_.isArray(files)) {
|
|
|
files = [files];
|
|
|
}
|
|
|
|
|
|
req.body.files = [];
|
|
|
_.each(files, file => {
|
|
|
|
|
|
let types = file.type.split('/');
|
|
|
|
|
|
if (!types || types[0] !== 'image') {
|
|
|
errTip = '上传文件格式不正确!';
|
|
|
}
|
|
|
|
|
|
if (file.size > 10 * 1024 * 1024) {
|
|
|
errTip = '上传文件尺寸太大!';
|
|
|
}
|
|
|
req.body.files.push(fs.createReadStream(file.path));
|
|
|
req.body.files.push(file.name);
|
|
|
});
|
|
|
|
|
|
if (errTip) {
|
|
|
return res.status(403).send({
|
|
|
message: errTip
|
|
|
});
|
|
|
}
|
|
|
this.api.upload('http://upload.static.yohobuy.com', {
|
|
|
fileData: req.body.files,
|
|
|
project: req.body.bucket
|
|
|
}).then(result => {
|
|
|
if (result.code === 200 && _.get(result, 'data.imagesList.length', 0)) {
|
|
|
result.data.imagesList = _.map(result.data.imagesList, imgUrl => {
|
|
|
return this.fileService.getAbsoluteUrl(imgUrl, req.body.bucket);
|
|
|
});
|
|
|
}
|
|
|
res.json(result);
|
|
|
}).catch(next);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
module.exports = FileController; |
...
|
...
|
|