图片未显示在快递上吗?

时间:2018-10-06 15:50:16

标签: node.js express express-handlebars

我已使用multer上传图片。在它正在我的根目录中的uploads目录上载文件。不是,我不想将图片显示为html。

我尝试了多种方法来定义图片网址,但图片没有显示。

var multer  = require('multer');
var upload = multer({ dest: 'uploads/'});

我正在尝试在views/admin/dashbord/product/index文件上显示图像。

uploads文件夹位于我的根目录APP Name/uploads中。

上传图像后,图像名称为:8084404d8c59647b7067f4ed98aa3eef.PNG

图片网址应该是什么,如何在index.handlebars文件中显示图片

感谢进阶。

1 个答案:

答案 0 :(得分:1)

创建stroge Dir

  const storage = multer.diskStorage({
      destination: './public/uploads/',
      filename: function(req, file, cb){
        cb(null,file.fieldname + '-' + Date.now() + path.extname(file.originalname));
      }
    });

上传文件

   const upload = multer({
      storage: storage,
      limits:{fileSize: 1000000},
      fileFilter: function(req, file, cb){
        checkFileType(file, cb);
      }
    }).single('myImage');

是否检查文件类型图像

function checkFileType(file, cb){
  // Allowed ext
  const filetypes = /jpeg|jpg|png|gif/;
  // Check ext
  const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
  // Check mime
  const mimetype = filetypes.test(file.mimetype);

  if(mimetype && extname){
    return cb(null,true);
  } else {
    cb('Error: Images Only!');
  }
}

您要上传图片的路线:

 app.post('/upload', (req, res) => {
      upload(req, res, (err) => {
        if(err){
          res.render('index', {
            msg: err
          });
        } else {
          if(req.file == undefined){
            res.render('index', {
              msg: 'Error: No File Selected!'
            });
          } else {
            res.render('index', {
              msg: 'File Uploaded!',
            });
          }
        }
      });
    });

然后在需要的地方使用图像。上传的文件应位于“公共”文件夹中。

您必须安装multer并导入软件包,并且必须导入path