node.js - Multer 存储在本地 AppData 而不是指定目录中

标签 node.js express multer

我正在将 Multer 与 MEAN2 堆栈一起使用,并且我通过 ng2-uploader 可以正常上传文件。

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

文件上传正常...但它上传到AppData\Local\Temp,这是上传后的文件信息:

[ { 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}`);
    }
  })
});

关于node.js - Multer 存储在本地 AppData 而不是指定目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39540117/

相关文章:

javascript - 使用 puppeteer 来使用 CSS @media 规则

javascript - 运行 Node 程序时出错。模块 'prompt' 不工作

javascript - Sequelize : SQLITE_ERROR: near "[]": syntax error

node.js - Meteor:如何添加 NodeJS 风格的模块?

node.js - 无法在 View 目录中查找 View "index"| express | HBS 代替handlebars.js

node.js - 我可以访问 multer 自定义存储引擎 _handleFile 函数中的 res 对象吗

node.js - express.js : how to download stream as a file?

node.js - 仅当新数据可用时调用外部 API

node.js - 为什么使用 Multer 上传文件在这里不起作用?

node.js - 使用 node.js 将文件上传到 Firebase 存储中的文件夹中