nodeJS中間層上傳文件

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;
    }
  }
  

});複製代碼
相關文章
相關標籤/搜索