не может прочитать свойство 'путь' из неопределенного - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь записать путь к файлу после загрузки на сервер, но возвращает следующую ошибку:

TypeError: Cannot read property 'path' of undefined

Мне удалось загрузить файлы, но я не смог найти путь к файлу.

    router.post('/uploadFile',function(req,res,next){
        if(req.method == "POST"){
            var accessToken = req.query["access_token"];
            var customerID = req.decoded.userID;
            var Storage = multer.diskStorage({
                destination: function(req, file, callback) {
                    callback(null, "./public/images");
                },
                filename: function(req, file, callback) {
                    callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
                    console.log(req.file.path);
                }
            });

   var upload = multer({
                storage: Storage
            }).array("imgUploader", 3);
    });

1 Ответ

0 голосов
/ 17 мая 2018

Вы не используете multer правильно.

  1. Инициализация multer должна происходить вне вашего кода промежуточного программного обеспечения
  2. Промежуточное программное обеспечение Multer (которое вы получаете после init) должно выполняться перед вашим (чтобы он мог анализировать запрос перед вашим доступом).
  3. Если вы используете массив, загружается несколько файлов с одинаковым именем параметра, поэтому следует использовать req.files, а не req.file. Сочетая их, ваш код становится:

    var Storage = multer.diskStorage({
                    destination: function(req, file, callback) {
                        callback(null, "./public/images");
                    },
                    filename: function(req, file, callback) {
                        callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
                        console.log(req.files['imgUploader'][0].path); //Or use a loop for all files
                    }
                });
    
    var upload = multer({
                    storage: Storage
                }).array("imgUploader", 3);
    
    
    router.post('/uploadFile', upload, function(req,res,next){
        if(req.method == "POST"){
            [...]
        }
    });
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...