1.使用form-data插件 new FromData() 上傳前端
2. 前端上傳以後 文件流的格式轉換了,因此node須要將數據處理爲formData格式進行上傳至後臺node
var express = require('express');
var path = require('path');
var request = require('request');
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var fs = require('fs');
var qs = require('querystring');
var config = require('config');
// 插件form-data
const FormData = require('form-data')
app.post('/erm/*', multipartMiddleware, function(req, res) {
var h_auth = '';
var h_date = '';
var body = req.body; // only accept json format
console.log(body)
if(req.originalUrl.includes('/erm/bi')){
let default_host = HOST;
req.originalUrl = req.originalUrl.substring(4, req.originalUrl.length);
default_host = OTA_HOST;
// 上傳文件
if(default_host == OTA_HOST && req.originalUrl.includes('/bi/shipment/equipments')){
// 處理文件
const { path: filePath, originalFilename } = req.files.file
// const newPath = path.join(path.dirname(filePath), originalFilename)
const file = fs.createReadStream(filePath)
let form = new FormData();
form.append('file', file);
form.append('id', body['id']);
form.append('name', body['name']);
form.append('saleName', body['saleName']);
form.append('userId', body['userId']);
if(req.session.sign) {
const sign = req.session.sign;
// console.log('>token: '+sign.token);
// console.log('>tokenSecret: '+sign.tokenSecret);
var date = moment(new Date).format("YYYY-MM-DD HH:mm:ss");
text = hmacSHA1(sign.token, sign.tokenSecret, date, 'POST', req);
req.paramHeader.headers['Authorization'] = text;
req.paramHeader.headers['X-Xiaoyi-Date'] = date;
h_auth = text;
h_date = date;
}
// 請求參數配置
var options = {
url: default_host + req.originalUrl,
headers: {
'Content-Type': 'multipart/form-data',
'Authorization': h_auth,
'X-Xiaoyi-Date': h_date,
},
formData: {
'id': body['id'],
'name': body['name'],
'saleName': body['saleName'],
'file': file
},
};
request.post(options, function(err, resp, data) {
if (data) {
const body = JSON.parse(data);
console.log(body);
const result = body.result;
const code = body.code;
const message = body.message;
if(code == 1) {
res.json(body);
} else {
res.json({code:code, message:message, result:result});
}
} else {
res.json({code:'500', message:'fail', result:'fail'});
}
});
return false;
}
}
});複製代碼