学生请假系统学习九 上传图片后端处理

1:解决后端的上传支持(图片是一种数据流  不是普通的数据   一个汉字两个字节   512个汉字=1Kb )
后端需要中间件
npm  i   multer  -save

2:在后端项目中新建了一个文件夹until   新建一个multer.js的文件   里面写入上传的核心功能
  一个图片存放的地址   两个是图片的重命名
//设置multer
var multer = require("multer");
var path = require('path');
var storage = multer.diskStorage({
    //设置上传路径
    destination: function (req, file, cb) {
        //path.join(__dirname, 'public/views')
        cb(null, path.join(__dirname, '../public/uploads'));
    },
    // destination:path.join(__dirname, 'public/uploads/'),
    //设置上传后文件的名称
    filename: function (req, file, cb) {
        var fileList = (file.originalname).split("."); //名称拆分获取名称和文件后缀
        //console.log(file);
        var newName = fileList[0]+ "-" + Date.now() + "." + fileList[fileList.length - 1];
        //为了方式重复的名称出现  我们采用名称+时间戳+文件后缀名
        cb(null, newName);
    }
});
var upload = multer({
    storage: storage
});
//导出公共的方法
module.exports = upload;
3:需要到public文件夹里面新建一个文件夹 uploads 用来放上传的图片

4:在项目里面新建一个文件夹config   里面新建一个文件index.js   里面放的全局的配置信息
let  info  ={
    baseURL:"http://localhost:3000"
}

module.exports = info;

5:回到router文件夹下面的index.js中  完成图片上传的接口
var express = require('express');
var router = express.Router();
let  upload = require("../until/multer");
let  config  = require("../config");

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});
//filename 只是表单中name的名称
router.post("/uploads",upload.array('filename'),(req,res)=>{
 //如果图片上传成功  返回图片上传的地址
  res.json({
    code:1,
    url:config.baseURL+"/uploads/"+req.files[0].filename,
  })
})

module.exports = router;

 

posted @ 2021-09-03 19:41  JSkolo_yyds  阅读(48)  评论(0编辑  收藏  举报