2016-03-13 3 views
0

Я пытаюсь загрузить многократные файлы с модальным, который содержит форму с вводом.Загрузка файлов с помощью multer (nodeJs) не работает

Мой модальный (формат шаблона нефрита):

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

У меня нет какой-либо явной ошибки (200 успеха), я не знаю, что это неправильно.

+0

Почему вы используете 'upload.array ('песни')' вместо 'upload.any()'? –

+0

Нет особой причины, но я также попытался с 'upload.any()', это не решило проблему. – Germain

ответ

1

Попробуйте использовать этот код:

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; 
+0

Все еще не работает ... – Germain

+0

Этот код сервера работает корректно для меня в 'NodeJS 5.7.1'. Попробуйте установить' console.log' перед 'res.redirect ('/')', чтобы убедиться, что этот маршрут работает , И убедитесь, что у вас есть права на запись в каталоге '../ public/test /' –

+0

В моей консоли отображается журнал (маршрут работает отлично). Я установил свою папку для разрешения 777, поэтому я не знаю, что еще нужно сделать ...:/ EDIT: Я изменил путь к абсолютному пути, и он работает. – Germain