1

I'm new to NodeJS and I tried this to post images through postman. But I can't figure out where am I lacking?

The postman parameters :

Here is the postman parameters

NodeJS Code

Now to access these values in my NodeJS, I'm currently doing this :

var express = require('express');
var bodyParser = require('body-parser');

const router = express.Router();
router.use(bodyParser.json());

router.post('/postData/uploadStory', function(req, res) {
    console.log(req.files);
    console.log(req.body);
     res.json("Hi");
})

How can I get access to the image and the key-value?

Also looked at express-fileupload node-module for doing this work for me.

  • Created a simple ejs with input name=foo type=file
  • tried to access it in the server.js file as console.log(req.files).

Didn't work.

Am I missing something? Please help. Thanks.

JustCurious
  • 344
  • 5
  • 15
  • You can't parse the file data from the request with just this code in nodejs. There are packages available for this, most simple & popular of which is multer, https://www.npmjs.com/package/multer. – Ankit Nov 20 '20 at 07:11

1 Answers1

2

multer is best option to upload file in node.js

create separate folder for multer like multerHelper.js

const multer = require('multer');
let fs = require('fs-extra');

let storage = multer.diskStorage({
destination: function (req, file, cb) {
    fs.mkdirsSync(__dirname + '/uploads/images'); // fs.mkdirsSync will create folders if it does not exist
    cb(null, __dirname + '/uploads/images');
},
filename: function (req, file, cb) {
   console.log(file);

    cb(null, Date.now() + '-' + file.originalname);
 }
})

let upload = multer({ storage: storage });

let createUserImage = upload.single('photo');

let multerHelper = {
    createUserImage,
}

module.exports = multerHelper;

In your routes import multerhelper file

const multerHelper = require("../helpers/multer_helper");

router.post('/upload/:userid',multerHelper, function(req, res) {
    console.log(req.files);
    console.log(req.body);
     res.json("Hi");
})
Aryan
  • 3,338
  • 4
  • 18
  • 43