通过npm安装multer插件https://www.npmjs.com/package/multer

首先先在node根目录的入口js文件中注册express.static中间件

/images是express.static 函数指定一个虚拟的静态目录,指向../uploads本地目录,可以改成./uploads 或者/uploads绝对路径,./uploads指向的就是项目跟目录下的uploads,文件夹需要提前建好,还需引入node中的path模块

app.use('/images', express.static(path.join(__dirname, '../uploads')));

通过express.router将方法导出,在node入口js文件中注册,前端调用uploadImg接口,将拼接好的图片url返回给前端就可以了

const express = require('express');
const router = express.Router();
const multer = require("multer");
const key = require('../../config/keys')

// 设置图片存储路径
var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '../uploads'); // ../uploads是将存放图片文件夹创建在node项目平级,./uploads会存放在node项目根目录下,需要提前建好文件夹,否则会报错
  },
  filename: function (req, file, cb) {
    cb(null, `${Date.now()}-${file.originalname}`) // 文件名
  }
})

// 添加配置文件到muler对象。
var upload = multer({ storage: storage });

/***
 * 图片上传 并将拼接好的图片url返回给前端,示例:(http://127.0.0.1:8000/images/xxxx.png)
 */
router.post('/uploadImg', upload.single('file'), (request, res) => {
  res.json({
    code: 200,
    data: {
      img: `http://172.0.0.1:8056/images/${request.file.filename}`
    },
    msg: '上传成功'
  })
})

module.exports = router
const common = require('./router/common/common')
app.use("/api/common",common)

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐