zoukankan      html  css  js  c++  java
  • multer图片上传

     效果图

    const express = require("express")
    const router = express.Router()
    const multer = require("multer")
        // 配置磁盘引擎
    let storage = multer.diskStorage({
            destination: function(req, file, cb) {
                //    指定文件存放路径
                cb(null, "./uploads/images")
            },
            filename: function(req, file, cb) {
                // 指定文件名,先获取扩展,随机生成文件名保存给保存文件的方法
                //获取文件扩展名
                let exts = file.originalname.split(".")
                let ext = exts[exts.length - 1] //为了防止上传图片时,图片的名称中含多个点,从后面取最后一个解决问题
                let tmpname = Date.now() + parseInt(Math.random() * 9999) //时间戳+随机数生成文件名
                cb(null, `${tmpname}.${ext}`)
            }
        })
        // 使用磁盘引擎的配置调用方法
    let upload = multer({ storage: storage })
        // 上传文件路由,使用single 方法接收前端 图片的name属性是'logo'的图片,保存到req.file
    router.post("/upload", upload.single("logo"), (req, res) => {
        // 判断文件是否过大,允许上传的文件类型
        let { size, mimetype, path } = req.file
        let types = ['jpg', 'jpeg', 'png', 'gif']
        let tmpType = mimetype.split("/")[1] //截取到文件类型("mimetype": "image/jpeg"中的jpeg)
        if (size > 1024 * 500) {
            return res.send({ err: -1, msg: "尺寸过大" })
        } else if (types.indexOf(tmpType) == -1) {
            return res.send({ err: -2, msg: "媒体类型错误" })
        } else {
            let savePath = req.file.path // 文件的保存路径(用于存数据库,文件地址用)
                //上传完图片,拼接返回前端图片的查看地址(静态托管的url要设置成这个)
            let imgUrl = `/public/images/${req.file.filename}`
            res.send({ err: 0, msg: "ok", imgUrl })
        }
    })
    module.exports = router
  • 相关阅读:
    StarGAN v2
    STGAN
    Neo4j 图数据库查询
    StarGAN
    AttGAN
    分布式事务解决方案--Seata源码解析
    5分钟彻底了解Nginx的反向代理
    SpringBoot启动流程源码解析
    JAVA基础5--注解的实现原理
    Redis进阶三之底层存储数据结构及内存优化
  • 原文地址:https://www.cnblogs.com/wjlbk/p/12633318.html
Copyright © 2011-2022 走看看