nodejs系列:41.koa之koa-multer中间件-中篇

1,042 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情

系列介绍

该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。

这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。

环境安装

实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。

以下是nodejs的安装地址,如果你没有安装的话,可以先把它安装上。安装了可以忽略这一步,跳到下面一步。

nodejs安装

前言

在上一篇文章里nodejs系列:40.koa之koa-multer中间件-上篇,主要先是对koa-multer这个中间件,做了简单介绍。我们可以使用koa-multer这个中间件,来方便地处理上传文件给到后端服务器这些功能。

我们已经把客户端代码写好了,接下来,我们完善一下服务器端的代码。

koa-multer

koa-multer是一个Node.js里的中间件,用来处理multipart/form-data类型的表单数据。我们平时上传文件时,就要提交一个form-data格式的表单数据给到后端,如果直接用原生的nodejs来处理这些form-data数据,将要用大段的逻辑代码来处理。而使用了koa-multer这个中间件,就可以比较方便地处理form-data这些表单数据。

实现

引入koa
const koa = require("koa");
const app = new koa();

引入koa,创建koa实例对象

引入koa-cors中间件
const cors = require("koa-cors");
app.use(cors());

引入koa-cors中间件,解决跨域问题

安装koa-multer
npm install koa-multer
引入koa-multer
const multer = require("koa-multer");
let storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, "public/upload/");
  },
  filename: function (ctx, file, cb) {
    const filenameArr = file.originalname.split(".");
    cb(null, Date.now() + "." + filenameArr.pop());
  },
});

引入koa-multer,调用multer的diskStorage方法,方法传递一个配置对象,配置对象属性介绍

  • destination:存储文件的位置
  • filename:存储文件命名
let upload = multer({
  storage: storage,
  limits: {
    fileSize: 1024 * 1024,
  },
});

使用中间件,limits里限制上传文件的大小

使用koa-multer中间件
router.post("/upload", upload.single("file"), function (ctx) {
  console.log("data", ctx.req.file.filename);
  ctx.body = {
    code: 200,
    msg: "上传成功",
    filename: ctx.req.file.filename,
  };
});

upload这个接口做处理,上传的文件,先经过koa-multer这个中间件处理,然后再执行它的回调函数。这里,我们返回状态码200,提示信息为上传成功,返回给到客户端。

app.use(router.routes());
app.use(router.allowedMethods());

使用koa-router中间件

启动服务
app.listen(3000, () => {
  console.log("服务器启动");
});

小结

在本小结文章里,我们完善了后端服务器的逻辑代码。等到下一篇文章里,我们将完成koa-multer中间件介绍的最后一部分,进行前后端联调。看下koa-multer中间件的使用效果。

最后,放上自己比较喜欢的一句诗句:

千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》