Node.js上传图片

目录

一.准备

二.在入口文件下编写如下代码

三.在router文件夹的fileRouter.js文件下编写如下代码


一.准备

下载第三方插件Multer

npm install multer --save

二.在入口文件下编写如下代码

  • 引入依赖
  • 封装处理路径函数
  • 设置 multer 的配置对象
  • 为 multer 添加配置
// 引入依赖
const multer = require('multer');
const path = require('path');
const express=require('express'); 
const app=express();

//解析post
const bodyparser=require('body-parser')
app.use(bodyparser.urlencoded({ extended: false }));
app.use(bodyparser.json());

//路由
const fileRouter=require('./router/fileRouter');

app.use('/',fileRouter);

app.listen(3000,()=>{
    console.log('server start');
})

三.在router文件夹的fileRouter.js文件下编写如下代码

const express=require('express');
const router=express.Router();
const multer=require('multer');

// 设置 multer 的配置对象
var storage = multer.diskStorage({
    destination: function(req,file,cb){
        //指定文件路径
        cb(null,'../Static/img')
    },
    filename: function(req,file,cb){
        //指定文件名
        let exts=file.originalname.split('.');
        let ext=exts[exts.length-1];
        let tmpname=(new Date()).getTime()+parseInt(Math.random()*9999);
        cb(null,`${tmpname}.${ext}`);
    }
})
var upload = multer({
    storage: storage
})

//图片上传 //为multer添加配置
router.post('/ChangePicture',upload.single('picture'),(req,res)=>{
    let {size,mimetype}=req.file;
    let types=['jpg','gif','jpeg','png'];   //允许上传的数据类型;
    let tmptype=mimetype.split('/')[1];
    if(req.file){
        if(size>=5000000){
            res.send({err:-1,msg:'图片内存大于5MB!'});    //图片大小
        }else if(types.indexOf(tmptype)==-1){
            res.send({err:-2,msg:'文件类型错误!'});
        }else{
            console.log(req.file);
            let url=`/public/img/${req.file.filename}`;
                res.send({err:0,msg:'图片上传成功!',img:`${url}`});
        }
    }else{
            res.send({err:-1,mag:'参数错误!'})
    }
})

module.exports=router;

在该配置中可以设置文件保存的地址、文件名称、限制上传的文件格式、文件大小

上面的 upload.single('picture') 表示单文件上传,并且字段名为 "picture",后面上传图片的字段必须保持一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值