Node.js图片上传api

cnpm install express --save 下载express依赖 很重要
cnpm install body-parser --save post请求才设置不然接收的req.body为null
router是进行一个路由的模块化 方便以后管理

const express = require('express')
const bodyParser = require('body-parser') 
const path = require('path')
const app = express()

app.use('/public',express.static(path.join(__dirname,'./static'))) //静态文件public 替换 当前路径/static
app.use(bodyParser.urlencoded({extended:false}));// 设置bodyParser//post请求请求才设置
app.use(bodyParser.json());
app.use(function(req,res,next){
    res.header("Access-Control-Allow-Origin","*");
    next();
})

const adminRouter = require('./router/admin')
const fileRouter = require('./router/file')
app.use("/admin",adminRouter);
app.use('/file',fileRouter);

app.listen(3000,()=>{
    console.log("开启成功")
})

cnpm install multer --save 下载multer 模块 用于图片上传
导出后引入到上面的文件 命名fileRouter

const express = require('express')
const router = express.Router()
const multer = require('multer')
var storage = multer.diskStorage({
    destination: function(req,file,cb){
        //指定文件路径
        cb(null,'./static/imgs')
    },
    filename: function(req,file,cb){
        //指定文件名
        let exts = file.originalname.split('.')
        let ext = exts[exts.length-1] //原文件后缀名  如果文件名是xxx.xxx.jpg取最后一个
        let tmpname = (new Date()).getTime()+parseInt(Math.random()*9999) //时间戳+随机数 确保名字不重复
        cb(null,`${tmpname}.${ext}`)
    }
});
var upload = multer({
    storage: storage
});

 
router.post('/upload',upload.single('imgsrc'),(req,res)=>{
    console.log(req.file)
    let {size,mimetype,path} = req.file
    let types = ['jpg','jpeg','png','gif'] // 允许上传的数据类型
    let tmpType = mimetype.split('/')[1]
    //大小50MB以内
    if(size > 51200000){
        return res.send({err:-1,msg:'尺寸过大'})
    }else if(types.indexOf(tmpType)==-1){
        return res.send({err:-2,msg:'类型错误'})
    }else{
        let url=`/public/imgs/${req.file.filename}`
        res.send({err:0,msg:'ok',imgres:url})
    }
})

module.exports = router;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值