0

I'm trying to upload multiples files with a modal that contains a form with an input.

My modal (jade template format) :

#modalAddFile.modal
    form#uploadForm(enctype='multipart/form-data', action='/#{category}/addFiles', method='post')
      .modal-content
        .file-field.input-field
          .btn
            span Ajouter
            input(type='file', name='songs', multiple)
          .file-path-wrapper
            input.file-path.validate(type='text')

      .modal-footer
        a#cancel.modal-action.modal-close.waves-effect.waves-red.btn-flat(href='#!') Annuler
        button#addFile.modal-action.modal-close.waves-effect.waves-green.btn-flat(type='submit', name='action', href='#!') Valider

routes.js :

var express = require('express');
var router = express.Router();
//Upload file
var multer  = require('multer');
var upload = multer({ dest: '../public/test/' });

//Add files
router.post('/:category/addFiles', upload.array('songs'), function (req, res, next) {
  res.redirect('/');
});

module.exports = router;

I don't have any apparent error (200 success), I don't know what is wrong.

2
  • Why do you use upload.array('songs') instead of upload.any()? Commented Mar 13, 2016 at 16:27
  • There is no particular reason, but I've also tried with upload.any(), it doesn't resolve the problem. Commented Mar 13, 2016 at 16:30

1 Answer 1

1

Try to use this code:

var express = require('express');
var router = express.Router();
var multer  = require('multer');
var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, '../public/test/')
    },
    filename: function (req, file, cb) {
        cb(null, file.fieldname)
    }
});
var upload = multer({ storage: storage });

//Add files
router.post('/:category/addFiles', upload.any(), function (req, res, next) {
  res.redirect('/');
});

module.exports = router;
Sign up to request clarification or add additional context in comments.

2 Comments

This server-code works correct for me in NodeJS 5.7.1 Try to set console.log before res.redirect('/') to make sure that this route is work. And make sure you have permissions to write in ../public/test/ directory
The log appears in my console (the route works fine). I've set my folder to 777 permission, so I don't know what more to do ... :/ EDIT : I changed the path to absolute path, and it's working know.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.