express中文件的上传 multer

multer

//安装multer
npm install --save multer
1.改变form表单的enctype
enctype="multipart/form-data"
设置file的名字 例:pic
2.引入multer

const multer = require("multer");
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, "static/uploads"); //指定上传保存的路径
  },
  // 修改上传后的文件名
  filename: function (req, file, cb) {
    // cb(null, file.fieldname + '-' + Date.now())
    // 1.获取后缀名
    let extname = path.extname(file.originalname);
    // 2.根据时间戳 生成文件名
    cb(null, Date.now() + extname);
  },
});

var upload = multer({ storage: storage }

);


3.接收
router.post("/toAdd",**upload.single("pic")**, (req, res) => {
  res.send({
    file:req.file
  });
}
);

例子:

//1 新建tools.js文件,添加文件上传模块封装

const path = require("path");
const multer = require("multer");
let tools = {
  /**
   * 配置上传文件插件-multer
   */
  setMulter() {
    let storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, "static/uploads"); //指定上传保存的路径
      },
      // 修改上传后的文件名
      filename: function (req, file, cb) {
        // cb(null, file.fieldname + '-' + Date.now())
        // 1.获取后缀名
        let extname = path.extname(file.originalname);
        // 2.根据时间戳 生成文件名
        cb(null, Date.now() + extname);
      },
    });

    let upload = multer({ storage: storage });
    return upload;
  },
};
module.exports = tools;

2.在需要用的文件中引入
const tools=require("../../modal/tools");

3.在要接收上传的post请求的第二个参数调用 tools.setMulter().single("pic")

router.post("/toAdd",tools.setMulter().single("pic"), (req, res) => {
  //获取表单传过来的数据
  res.send({
    file: req.file,
  });

});
  • 一般保存图片时,以一天作为一个文件夹分类保存
  • silly-datetime 时间格式化插件使用
  • mkdirp 递归创建目录

多文件上传

var cpUpload = tools.setMulter().fields([

  { name: "pic1", maxCount: 1 },
  { name: "pic2", maxCount: 1 },
])
接收:req.files
;
原文地址:https://www.cnblogs.com/bitlei/p/14399579.html