【问题标题】:can't change name to uploaded file using multer无法使用 multer 将名称更改为上传的文件
【发布时间】:2018-05-22 06:14:41
【问题描述】:

我正在尝试使用multer 更改上传到服务器的图像名称,这会为文件提供一个随机名称。 我使用multer.diskStorage 方法按照文档中的说明执行此操作,但它一直使用随机名称保存文件

代码:

const storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null,'./uploads/')
    },
    fileName: (req,file,cb) => {
        cb(null, file.originalname)
    }
})
const upload = multer({storage: storage})


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

    res.send(req.file);
}

回应:

{ 
  fieldname: 'carImage',
  originalname: 'testOCR8.jpg',
  encoding: '7bit',
  mimetype: 'image/jpeg',
  destination: './uploads/',
  filename: '229f70c20e5550dbe638db49791ef17d',
  path: 'uploads/229f70c20e5550dbe638db49791ef17d',
  size: 1712380 
}

【问题讨论】:

    标签: javascript node.js express multer


    【解决方案1】:

    我正在使用 multer 上传到服务器,这会为文件提供一个随机名称

    你打错了。它是filename 而不是fileName。这是the docs 的标准行为。

    filename 用于确定文件夹内的文件应命名为什么。如果没有给出filename,每个文件将被赋予一个不包含任何文件扩展名的随机名称。

    所以,你的代码应该是

    const storage = multer.diskStorage({
        destination: (req, file, cb) => {
            cb(null,'./uploads/')
        },
        filename: (req,file,cb) => { // notice the change 'filename'
            cb(null, file.originalname)
        }
    });
    const upload = multer({storage: storage});
    

    【讨论】:

      【解决方案2】:

      尝试不同的方法来使用 StorageMulter。试试下面的 -

      var StorageMulter = multer.diskStorage({
         destination: function(req, file, callback) {
            callback(null, "./temp");
         },
         filename: function(req, file, callback) {
            var uploadFileName = "x.jpg"; //Manipulate this variable accordingly
            callback(null, uploadFileName);
         }
      });
      
      var upload = multer({
         storage: StorageMulter
      });
      
      app.post("/api/uploaddocument", function(req, res) {
         upload(req, res, function(err) {
            if (err) {
               return res.end("Something went wrong!"+ err);
            }
         });
      });
      

      【讨论】:

      • 字段名去哪儿了?喜欢这里upload.single('carImage') 'carImage'
      • 查看“var uploadFileName = "x.jpg"这一行。您可以将 x.jpg 更改为您希望文件命名的任何内容。
      • 不,我知道了,但multer 也需要fieldname
      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 2017-06-12
      • 2021-11-09
      • 2020-06-01
      • 2020-09-22
      • 2018-09-13
      • 2016-03-06
      • 2016-05-14
      相关资源
      最近更新 更多