zoukankan      html  css  js  c++  java
  • 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
    ;
    
  • 相关阅读:
    web设计师和前端设计师的互动—前端工程师应该具备的三种思维
    PyQt入门系列(一):Hello World
    PIL在windwos系统下Image.show无法显示图片问题的解决方法
    大赛学习笔记
    ArcGIS Add-in开发(一)--获取选定要素的属性值
    【转】WPF颜色相关操作
    斗地主小代码
    MAVEN配置私服仓库
    Error creating bean with name 'transactionManager' defined in ServletContext resource XXX
    org.hibernate.HibernateException: getFlushMode is not valid without active transaction
  • 原文地址:https://www.cnblogs.com/bitlei/p/14399579.html
Copyright © 2011-2022 走看看