【问题标题】:How to change name of file uploaded with multer after calling post method调用post方法后如何更改使用multer上传的文件的名称
【发布时间】:2017-10-23 18:28:22
【问题描述】:

我想使用具有唯一名称的 multer 保存图片。文件名的格式是file.orginalName + req.body.userName

我的代码:

const express = require('express');
const router = express.Router();
const multer  = require('multer');
const bcrypt  = require('bcrypt');
const passport = require('passport');

let User = require('../models/user');

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/avatars/')
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname)
  }
});

const upload = multer({ storage: storage })


router.post('/register', upload.single('avatar'), (req, res) => {

  ////here I want to change the uploaded avatar name then save to DB
});

module.exports = router;

如何更改我的代码以在 post 方法中重命名图片名称?

【问题讨论】:

  • 您可以传递自定义文件名来代替file.originalname
  • 但是我不能通过req.body.username,我想通过那里

标签: javascript node.js express multer


【解决方案1】:
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, 'uploads/avatars/')
    },
    filename: function (req, file, cb) {
        //console.log(req.body)
        cb(null, file.originalname)
    }
});

const upload = multer({ storage: storage })

router.post('/register', (req, res) => {
    upload(req, res, function(err) {
        if(err) {
            //stuff when error while file uploading
        } else {
            //file uploaded
        }
    })
});

【讨论】:

  • ReferenceError: storage is not defined 然后
  • 很高兴,它有帮助:)
猜你喜欢
  • 1970-01-01
  • 2020-06-01
  • 2016-06-29
  • 1970-01-01
  • 2014-11-26
  • 2016-03-06
  • 2016-09-14
  • 2016-05-14
  • 1970-01-01
相关资源
最近更新 更多