Multer存储在本地AppData中,而不是指定的目录中



我使用Multer与我的MEAN2堆栈,我已经通过ng2上传文件工作良好。

但我正试图将其上传到服务器,以便我可以将csv文件解析为json,但这不是问题。

文件上传的很好…但是它上传到AppDataLocalTemp,这里是上传后的文件信息:

[ { fieldname: 'file',
    originalname: 'sfgsgsfrfs.jpg',
    encoding: '7bit',
    mimetype: 'image/jpeg',
    destination: 'C:\Users\Jezyk\AppData\Local\Temp',
    filename: 'z83yrcprp4m8azfflxr.jpg',
    path: 'C:\Users\Jezyk\AppData\Local\Temp\z83yrcprp4m8azfflxr.jpg',
    size: 120850 } ]

,下面是我用来存储文件的代码:

const upload = multer({
    dest: './server/uploads/',
    storage: multer.diskStorage({
        filename: (req, file, cb) => {
            let ext = path.extname(file.originalname);
            cb(null, `${Math.random().toString(36).substring(7)}${ext}`);
        }
    })
});
router.route('/upload').post(upload.any(), (req, res) => {
    console.log(req.files);
    res.json(req.files.map(file => {
        let ext = path.extname(file.originalname);
        return {
            originalName: file.originalname,
            filename: file.filename
        }
    }));
});

知道为什么会这样吗?

如果使用显式配置的存储实例,则需要添加destination回调:

const upload = multer({
  storage: multer.diskStorage({
    destination: (req, file, cb) => {
      cb(null, __dirname + '/server/uploads/')
    },
    filename: (req, file, cb) => {
      let ext = path.extname(file.originalname);
      cb(null, `${Math.random().toString(36).substring(7)}${ext}`);
    }
  })
});

最新更新