2016-02-08 5 views
4

Im имея приложение узла с курьерским, использование которого multer модуль https://github.com/expressjs/multerИспользования multer ошибки причины при запуске приложения

в файле app.js я поставил следующее:

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

store.js файла выглядеть так

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 
} 

Когда я запускаю запрос, используя почтальон, я получил следующую ошибку:

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

Почему multer не создает папку, если она не существует ??

Если я создаю папку загрузки в корне вручную это работает ...

КСТАТИ Когда я изменяю следующее и удалить storage: mul.storage, Это работает, но я нужен хранение в определить имя файла ...

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

Даже если я удалить свойство из объекта Dest multer и держать только S torage я получил ту же ошибку ...

+0

Как уже говорилось в ответе, multer не создает папку, она должна быть создана либо вручную или программно. Предполагая, что папка uploades существует, есть ли другие, с которыми вы сталкиваетесь с загрузками? – Raf

ответ

4

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

Это в документации (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.

Я не знаю, почему автор сделал это решение, но, как вы видите это не ошибка.

Вы можете использовать модуль fs для создания каталогов.

0

У меня была та же проблема, если кто-то взять ошибку я решил

var storage = multer.diskStorage({ 
destination: function (req, file, cb) { 
cb(null, 'this is not just /uploads do it like /var/www/....') thank you!! 
}, 
filename: function (req, file, cb) { 
cb(null, file.fieldname + '-' + Date.now()) 
} 
}) 
var upload = multer({ storage: storage });