使用猫鼬将原始名称上传到Nodejs服务器上的文件(图像)

时间:2020-04-01 04:33:02

标签: express mongoose multer

我正在使用nodeJS上传图像文件并进行表达,目前,图像以随机文件名保存,没有特定文件类型。我想用扩展名保存文件名,以便我也可以显示它,因为当前在数据库文件名中保存为原始文件,但在上载文件夹中,它会分配一个随机名称(字符串),当我提取该名称时返回我不知道如何显示它,因为它没有任何文件类型/扩展名,即.png / JPEG。

//Schema

const AddProductSchema = new Schema({

  productCode: String,
  productTitle: String,
  productImage: String

//defined express, mongoose, multer and upload const for the directory
const upload = multer({
  dest: __dirname + '/uploads/images'
});

//post method
app.post("/addProductToDB", upload.single("productImage"), function(req, res) {

// to get the detail filled on add product form
  const addproduct = new AddProduct({
    productCode: req.body.productCode,
    productTitle: req.body.productTitle,
    productImage: req.file.originalname

  });

  addproduct.save();
  res.redirect("/products");

});

1 个答案:

答案 0 :(得分:0)

如果要显示图像productImage: Buffer,应将productImage保存为缓冲区类型
有一个名为Sharp的软件包,可以帮助您自定义图像文件,然后再保存到数据库中,名为Sharp https://www.npmjs.com/package/sharp
如果要在保存之前具有png文件类型,可以使用以下代码

  const buffer = await sharp(req.file.buffer)
      .png()
      .toBuffer();

然后,您只需要将缓冲区保存到productImage: buffer