upload.js 7.3 KB
var request = require('request');
var _ = require('lodash');
var fs = require('fs');
var ipaddr = require('ipaddr.js');
var domain = require('../../config/common.js').domain;

//老上传地址
var oldUploadUrl = 'http://upload.static.yohobuy.com';

//上传异常的信息
var errBackMsg = {
    code: "500",
    message: "接口异常"
};

//var domain = 'http://172.16.6.227:8088/platform'; //马力
// var domain = 'http://172.16.6.162:8088/platform';
//var domain = 'http://172.16.6.240:8088/platform';

exports.uploadFile = function(req, res) {
    var headers = {};
    if (req.session && req.session.user) {
        var ipObject = ipaddr.process(req.ip).octets
        var ip = ipObject ? ipObject.join('.') : req.ip;

        headers = {
            'x-user-id': req.session.user.auth.pid,
            'x-user-name': req.session.user.auth.account,
            'x-site-type': 1,
            'x-client-ip': ip
        };

    } else {
        res.json({
            code: "501",
            message: "用户失效,请重新登录"
        });
    }

    if (req.is("multipart/form-data")) {
        console.log(req.body);
        var url = [];
        for (var key in req.body) {
            url.push(key + "=" + req.body[key]);
        }
        req.body.file = fs.createReadStream(req.files[req.body.filename].path);
        if (req.body.__type == "batch-import") {
            request.post({
                url: domain + '/batch/import?' + url.join("&"),
                formData: req.body,
                headers: headers
            }, function optionalCallback(error, httpResponse, body) {
                if (error) {
                    return console.error('upload failed:', error);
                }
                if (!error && httpResponse.statusCode == 200) {
                    var json = JSON.parse(body);
                    json.status = true;
                    // console.log(json);
                    res.json(json);
                } else {
                    res.json(errBackMsg);
                }
            });
        } else {

            //如果是goodsimg(商品)的图片,灰度到老系统的上传地址
            if (req.body.bucket === 'goodsimg') {
                req.body.filename = req.files[req.body.filename].path;
                request.post({
                    url: oldUploadUrl,
                    formData: {
                        fileData: req.body.file,
                        project: req.body.bucket
                    }
                }, function(error, resd, body) {
                    if (!error && resd.statusCode == 200) {
                        var ret = JSON.parse(body);
                        if (ret.code === 200) {
                            var imgUrl = ret.data.imagesList[0];
                            res.json({
                                code: 200,
                                data: joinimg(imgUrl),
                                message: '上传成功',
                                status: true
                            });
                            return;
                        }
                    }
                    res.json(errBackMsg);
                });
            } else {

                request.post({
                    url: domain + '/fileupload/upload',
                    formData: req.body
                }, function optionalCallback(error, httpResponse, body) {
                    console.log(body);
                    if (!error && httpResponse.statusCode == 200) {
                        var json = JSON.parse(body);
                        json.status = true;
                        res.json(json);
                    } else {
                        res.json(errBackMsg);
                    }
                });
            }
        }
    } else {
        res.json({
            code: "500",
            message: "请求类型错误"
        });
    }
}

/**
 * 组合全路径的图片地址
 */
function joinimg(url) {
    var urlArr = url.split('/');
    var domain = 'static.yhbimg.com/goodsimg';
    var num = urlArr[urlArr.length - 1].substr(1, 1);
    var url = domain + url;
    if (num == 1) {
        return 'http://img11.' + url;
    } else {
        return 'http://img12.' + url;
    }
}

// exports.getSaveState=function(req,res){
//     console.log("6666666");
//     request.post({
//         url: domain + '/product/queryBatchImportResult',
//         formData: req.body
//     }, function optionalCallback(error, httpResponse, body) {
//         console.log(body);
//         if (error) {
//             return console.error('upload failed:', error);
//         }
//         if (!error && httpResponse.statusCode == 200) {
//             var json = JSON.parse(body);
//             json.status = true;
//             // console.log(json);
//             res.json(json);
//         } else {
//             res.json(errBackMsg);
//         }
//     });
// }

exports.ueditor = function(req, res) {
    var headers = {};
    if (req.session && req.session.user) {
        var ipObject = ipaddr.process(req.ip).octets
        var ip = ipObject ? ipObject.join('.') : req.ip;

        headers = {
            'x-user-id': req.session.user.auth.pid,
            'x-user-name': req.session.user.auth.account,
            'x-site-type': 1,
            'x-client-ip': ip
        };

    } else {
        res.json({
            code: "501",
            message: "用户失效,请重新登录"
        });
    }

    console.log(req.files);
    if (req.is("multipart/form-data")) {
        req.body.file = fs.createReadStream(req.files.upfile.path);
        req.body.bucket = "goodsimg";
        request.post({
            url: domain + '/fileupload/upload',
            formData: req.body
        }, function optionalCallback(error, httpResponse, body) {
            // {"code":200,"data":"http://img12.static.yhbimg.com/goodsimg/2016/03/10/20/0258a569ab956e81339c7212bb23767c2d.jpg","message":"上传成功","status":true}
            // {"originalName":"demo.jpg","name":"demo.jpg","url":"upload\/demo.jpg","size":"99697","type":".jpg","state":"SUCCESS"}
            // {"originalName":"018da7232374448d10a565fdfe6211d078.jpg","name":"","url":"","type":".jpg","state":"SUCCESS"}
            if (!error && httpResponse.statusCode == 200) {
                var json = JSON.parse(body);
                var result = {};
                result.originalName = json.data.substring(json.data.lastIndexOf('/') + 1);
                result.name = result.originalName;
                result.url = json.data;
                result.type = json.data.substring(json.data.lastIndexOf('.'));
                result.state = json.message == "上传成功" ? "SUCCESS" : "FAIL";
                res.send(JSON.stringify(result));
            } else {
                res.send({
                    code: "500",
                    message: "接口异常"
                });
            }
        });

    } else {
        res.json({
            code: "500",
            message: "请求类型错误"
        });
    }
}

exports.linkFile = function(req, res) {
    request.get(domain + "/common/" + req.params.name + ".xlsx").pipe(res);
}

exports.downFile = function(req, res) {
    var options = {
        method: 'POST',
        url: domain + '/batch/export',
        headers: {
            'content-type': 'application/json'
        },
        body: req.query,
        json: true
    };
    request(options).pipe(res);
}