携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情
系列介绍
该系列主要是介绍一些nodejs相关的基础知识,没有什么特别难的知识点,都是一些比较基础知识点。大家学习起来,也会比较容易理解和接收。
这些知识点,也是以前自己学习nodejs的时候,学习过的知识点。有些知识点,可能是由于学习的时间比较久了,也有可能是平时工作中用到的机会比较少,也差不多快把它们都忘记掉了。现在把它们都写下来,写成文章,一方面是记录下自己以前学习的nodejs知识点,一方面也是复习巩固自己以前学习的nodejs知识点。不要学着学着,就把以前的知识点都忘光了。
环境安装
实现之前,你首先需要安装nodejs环境。因为我们写的代码需要在node环境上运行,如果你没有,那么文件会运行不了。
以下是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中间件的使用效果。
最后,放上自己比较喜欢的一句诗句:
千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》