Jhon D February 2016

Using multer cause error when running app

Im having node application with express which use multer module https://github.com/expressjs/multer

in the app.js file I put the following:

var mulStorage = require("./utils/store"),
    var upload = multer({
        storage: mul.storage,
        dest: 'uploads/'
    });
    app.use(upload.single('file'));

The store.js file look like following

var multer = require('multer');

var stor = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, './uploads/')
    },
    filename: function (req, file, cb) {
        var filename = file.originalname;
        var fileExtension = filename.split(".")[1];
        cb(null, Date.now() + "." + fileExtension);
    }
})
module.exports = {
    stor: stor
}

When I run request using postman I got the following error:

Error: ENOENT: no such file or directory, open 'c:\Users\c45669\WebstormProjects\App\uploads\1454935327214.zip'
   at Error (native)

Why multer doesn't create the folder if it doesn't exist??

If I'm creating the upload folder under the root manually this is working...

BTW, When I change the following and remove the storage: mul.storage, This is working, but I need the storage to determine the file name ...

    var upload = multer({
        //storage: mul.storage,
        dest: 'uploads/'
    });

Even If I remove the property dest from multer object and keep only the storage I got the same error...

Answers


Krzysztof Sztompka February 2016

Why multer doesn't create the folder if it doesn't exist??

This is in documentation (link) :

Note: You are responsible for creating the directory when providing destination as a function. When passing a string, multer will make sure that the directory is created for you.

I don't know why the author made this decision, but as you see this is not a bug.

You can use fs module to create directories.

Post Status

Asked in February 2016
Viewed 2,071 times
Voted 4
Answered 1 times

Search




Leave an answer