首页 > 解决方案 > Multer 将图像上传到节点 js 服务器(Github 作为存储)

问题描述

我部署了一个基于 Web 的应用程序,但 multer 上传不起作用。它确实在本地主机中工作,没有错误,但文件/s 没有保存在我的导演中。这是我的代码:

const multer = require("multer");

 const imageFilter = (req, file, cb) => {
 if (file.mimetype.startsWith("image")) {
  cb(null, true);
 } else {
  cb("Please upload only images.", false);
 }
};

var storage = multer.diskStorage({
 destination: (req, file, cb) => {
  cb(null, __basedir + "/resources/static/assets/uploads/");
 },
  filename: (req, file, cb) => {
   cb(null, `${file.originalname}`);
  },
});

 var uploadFile = multer({ storage: storage, fileFilter: imageFilter });
 module.exports = uploadFile;

标签: node.jsmulter

解决方案


发生的情况是该__basedir表达式将导致“未捕获的 ReferenceError:__basedir 未定义”错误,但它在代码中被默默地吃掉了。要使错误正确传播,请尝试在违规行周围添加 try-catch 块:

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    try {
      cb(null, __basedir + "/resources/static/assets/uploads/");
    } catch (e) {
      cb(e);
    }
  },
  filename: (req, file, cb) => {
    cb(null, `${file.originalname}`);
  }
});

推荐阅读