【问题标题】:Uploading image using api in node express using multer package使用 multer 包在 node express 中使用 api 上传图像
【发布时间】:2019-04-18 17:02:39
【问题描述】:

以前有人问过这个问题。但由于我的问题没有得到解决,我再次询问。

我正在尝试使用 multer 包作为表单数据上传属性的图像,以便我可以将其他数据和图像路径存储在数据库中。我正在使用节点快递。

我的 api--

      api.post('/service', upload.single('servicesImage'),
          (req, res,  next) => {
              console.log(req.file);
              Company.find({ domain: req.headers.domain }, 
                  (err, company) => {
                     const servicecontent = new Servicecontent({
                     description: req.body.description,
                     created_at: Date.now(),
                     created_by: req.body.user_id,
                     company_domain: req.headers.domain,
                     company_uuid: company[0].uuid,
                     image: req.file.path,
                     })
                     servicecontent.save(err => {
                         console.log(err);
                     });
           res.json({ status: "success" });
           });
         });

我看了一个教程,并从中添加了这些代码来上传图片和其他选项--

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

   const upload = multer({storage: storage, limits:{
      fileSize: 1024*1024*5
   },
      fileFilter: fileFilter
   });

   const fileFilter = (req, file, cb) =>{
      if(file.mimetype=== 'image/jpeg' || file.mimetype=== 'image/png'){
         cb(null,true);
      }else{
         cb(null,false);
      }
   };

现在当我通过 Postman 发送数据和图像时,来自console.log(req.file) 正如我从教程中看到的那样,我得到了有效的数据。 Api 响应没有任何错误,并且在数据库中我可以看到所有数据都已存储,包括图像路径。但是我面临的问题是src/upload文件夹是空的,没有上传图片。

注意 -- 我使用的是 linux 18.04 操作系统,无法安装 fs 包。所以src/upload在我发送req时没有创建文件夹,所以我从文件夹创建了这个目录。

编辑:我现在可以使用此代码上传图片,我不完全知道为什么这不能早些工作。如果可能的话,我应该关闭这个问题。

【问题讨论】:

    标签: node.js express image-uploading multer


    【解决方案1】:

    我现在可以使用此代码上传图片,但我不完全知道为什么之前不能正常工作。如果可能的话,我应该关闭这个问题。

    【讨论】:

      【解决方案2】:

      试试这个来存储图片。

      var storage = multer.diskStorage({
         destination: function (req, file, cb) {
           cb(null, 'uploads/')
      
         },
         filename: function (req, file, cb) {
             console.log(file);
           cb(null, makeid(3) + file.originalname)
         }
       })
      
       var upload = multer({ storage: storage })
        `
      

      【讨论】:

        猜你喜欢
        • 2021-02-04
        • 1970-01-01
        • 2018-11-23
        • 2021-04-16
        • 2018-04-27
        • 2020-09-26
        • 2015-10-21
        • 2019-02-21
        • 2017-11-12
        相关资源
        最近更新 更多