zoukankan      html  css  js  c++  java
  • multer中间件

    1.Multer是node.js的一个中间件,用于处理multipart/form-data类型的表单数据,它主要用于上传文件。(Multer不会处理任何非multipart/form-data类型的表单数据)
    2.Multer的使用:
    1)Multer会添加一个body对象以及file或files对象到express的request对象中,body对象包含表单的文本域信息,file或files对象包含对象表单上传的文件信息。
    2)基本使用方法:
    //引入multer模块,主要应用于图片或文件的上传
    const multer = require("multer");
    //第一件事情 读文件     将文件放在指定的区域
    //第二件事件 更改文件名称
    
    //配置项
    var storage = multer.diskStorage({  
        //将上传的文件存储在指定的位置
        destination: function (req, file, cb) {
           //浏览器在执行项目时,会从public文件夹开始,所以将图片保存在项目中时的路径是以public文件夹开始的
          cb(null, './public/img')
        },
        //将上传的文件做名称的更改
        filename: function (req, file, cb) {
           //file.originalname保存着图片的名称
          cb(null,  Date.now()+"-"+file.originalname);//在图片名称的前面加上时间戳,以防上传同一张图片时会被覆盖
        }
      })
    
    var upload = multer({ storage: storage })
    //指定当前字段可以携带多少个文件
    //name的属性值需要和formData.append("logo",logo[0].files[0]);中定义的属性名相同
    //maxCount表示最多可以携带多少个文件
    var cpUpload = upload.fields([{ name: 'logo', maxCount: 1 }])
    
    //导出配置项
    module.exports = {
        cpUpload
    }
    3)服务器接收formData信息:
        //req.files中保存着存入图片的所有信息(一个对象,键为存入服务器的key值:logo,值为一个数组),req.files.logo为一个数组,里面包含着图片的所有信息
        //req.files.logo[0].path保存着图片在本项目中的绝对路径(public\img\1.jpg),但是需要将其转换为http://localhost:3000/publicimg1.jpg的形式
        let path = req.files.logo[0].path;
        var reg = /public\img\(.+)/;//在服务端中解析不能使用\,(.+)中.表示任意字符,+表示1到多个字符
        var newPath = path.replace(reg,($0,$1)=>{
            //$0表示匹配整个正则,$1表示reg中第一个括号里的内容,如果有$2则表示reg中的第二个括号的内容
            var str = "http://localhost:3000/img/";//此时的图片是以detail.html起点开始找的,所以前面的路径应该要把public去掉,直接找到img文件夹,不然图片的路径会寻找不到
            return str += $1;
        })
  • 相关阅读:
    SQL Server 深入解析索引存储(非聚集索引)
    class.forName的官方使用方法说明
    使用C++实现学生管理系统
    hdu5033 Building 单调队列
    leetCode 72.Edit Distance (编辑距离) 解题思路和方法
    IOS7 textkit 的相关
    nodejs即时聊天
    5种语言混合编程:C++、JS、python、Lisp、汇编
    java Semaphore信号亮-同意多个任务同一时候訪问这个资源--thinking in java21.7.6
    关于Android的.so文件所须要知道的
  • 原文地址:https://www.cnblogs.com/Leslie-Cheung1584304774/p/10544131.html
Copyright © 2011-2022 走看看