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

 

posted @ 2020-03-21 14:53  江湖艺人  阅读(391)  评论(0编辑  收藏  举报