使用 multer , expressess , typescript 上传图片

时间:2021-07-06 15:32:08

标签: node.js typescript mongodb express multer

我使用 multer 、expresss 和 typescript 上传图像。 在我的 console.log \ response 中,服务器似乎正确地接收了图像 但是,图像未保存在我的服务器目录中。

这是我的代码: 我的上传功能:


const storage = multer.diskStorage({
 destination: function (req , file , cb) {

     cb(null , 'uploads/')
 } , 
 filename: function (req: any, file: any, cb: any) {
   cb(null, file.originalname)
}
})
function checkFileType(file: any , cb: any)
{

 const filetypes= /jpg|jpeg|png/
 const extname= filetypes.test(path.extname(file.originalname).toLowerCase())
 const mimetype = filetypes.test(file.mimetype)

 if(extname && mimetype) { 
     return cb(null, true)
 } else{ cb('images only')}
}
const upload = multer({
 storage,
 fileFilter: function(req,file,cb) { 
     checkFileType(file,cb)

 }
})


我的控制器:


@controller('/products')
    class ProductsClass { 
      @post('/newProduct')
      @bodyValidator('name', 'price', 'desc' , 'pic')
      async PostProduct  (req: Request,res: Response) { 
        try {
     upload.single('pic')
         const product = await ProductModel.create(
        {   name: req.body.name,
           price: req.body.price,
           desc: req.body.desc ,
           catagory: req.body.catagory,
            pic: req.files

}
         )
          res.send(product)
        } catch  (error) {   
          res.json(error);

          
        }
      }


回复:


{
    "dateOfEntry": "2021-07-06T14:05:38.263Z",
    "lastUpdated": "2021-07-06T14:05:38.263Z",
    "_id": "60e46335a87baf1bc430659c",
    "desc": "dasda",
    "pic": [
        {
            "fieldname": "pic",
            "originalname": "user-3.jpg",
            "encoding": "7bit",
            "mimetype": "image/jpeg",
            "buffer": {
                "type": "Buffer",
                "data": [
                    255,
                    216,
...
...
...

我想问题出在存储功能上,但是我无法将手指指向正确的位置。 提前致谢。

0 个答案:

没有答案