• 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
    ;
    
  • 相关阅读:
    arcgis for silverlight 控制图层显示级别
    Telerik for silverlight RadAutoCompleteBox 动态数据源
    ARM嵌入式学习--OK6410裸板程序--2.GPIO控制LED跑马灯(从ARM汇编跳转到C语言)
    ARM嵌入式学习--OK6410裸板程序--1.GPIO控制LED
    Linux内核移植--1.添加NAND Flash分区
    Linux 快速释放端口与释放内存缓存
    jquery ajax session超时处理
    相濡以沫不如相忘江湖
    SQL Server数据库无法启动(万金油解决办法)
    多显示器实现屏幕扩展(VGA DVI HDMI)
  • 原文地址:https://www.cnblogs.com/bitlei/p/14399579.html
Copyright © 2020-2023  润新知