0

I have been trying to upload a csv file from browser to express js and then from there send a post call to another url to upload the same file using multipart. but it throws error as below

Argument error, options.multipart.
Error: Argument error, options.multipart.
    at Multipart.isChunked (d:\avx_node_poc\avx-webApp\node_modules\request\lib\multipart.js:21:32)
    at Multipart.onRequest (d:\avx_node_poc\avx-webApp\node_modules\request\lib\multipart.js:104:22)
    at Request.multipart (d:\avx_node_poc\avx-webApp\node_modules\request\request.js:1270:19)
    at Request.init (d:\avx_node_poc\avx-webApp\node_modules\request\request.js:406:10)
    at new Request (d:\avx_node_poc\avx-webApp\node_modules\request\request.js:128:8)
    at request (d:\avx_node_poc\avx-webApp\node_modules\request\index.js:53:10)
    at d:\avx_node_poc\avx-webApp\routes\index.js:231:5
    at Layer.handle [as handle_request] (d:\avx_node_poc\avx-webApp\node_modules\express\lib\router\layer.js:95:5)
    at next (d:\avx_node_poc\avx-webApp\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (d:\avx_node_poc\avx-webApp\node_modules\express\lib\router\route.js:112:3)

Below is express code

const express = require('express');
const http = require('http');
const router = express.Router();
const request = require('request');
const multer  = require('multer');
const upload = multer();

const prop = {
    protocol: "http:",
    host: '192.168.138.171',
    port: 7300
};

/* uploadAndValidateUsers call */
router.post('/uploadAndValidateUsers', upload.single('userFile'),function(req, res, next) {
    console.log(req.file);
    request({
        url: prop.protocol + "//" + prop.host + ":" + prop.port + "/avxui/" + req.url,
        headers: {
            "Cookie": req.headers['cookie'],
            "Content-Type": req.headers['content-type']
        },
        method: req.method,
        multipart: req.file
    }).pipe(res);
});

module.exports = router;
Selvakumar
  • 527
  • 2
  • 13
  • How is the content in `req.file` looking like? – ViKiG Feb 21 '18 at 06:44
  • [This](https://stackoverflow.com/questions/25344879/uploading-file-using-post-request-in-node-js) seems something you can make it work for your case also. – ViKiG Feb 21 '18 at 06:54
  • @ViKiG { fieldname: 'userFile', originalname: 'SampleUser.csv', encoding: '7bit', mimetype: 'application/octet-stream', buffer: , size: 226 } – Selvakumar Feb 21 '18 at 07:05
  • But `multipart` option takes array of objects. Look [here](https://www.npmjs.com/package/request#requestoptions-callback). – ViKiG Feb 21 '18 at 07:20

1 Answers1

0

you are missing the dest or storage option

var upload = multer({ dest: 'uploads/' })

multer options

Jairo Malanay
  • 1,327
  • 9
  • 13