• 欢迎访问web前端中文站,JavaScript,CSS3,HTML5,web前端demo
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏web前端中文站吧

node.js Koa 框架 的Cookies、表单、文件上传功能详解

JAVA web前端中文站 2年前 (2017-08-09) 1126次浏览 已收录 0个评论

koa 框架对 cookie 的操作也有封装。而且 api 也相当的简单。

更多精彩内容请看 web 前端中文站
http://www.lisa33xiaoq.net 可按 Ctrl + D 进行收藏

我们可以根据 Context 提供的两个方法来对 cookie 进行访问和修改。

ctx.cookies.get(name, [options])

获得 cookie 中名为 name 的值,options 为可选参数:

  • ‘signed’: 如果为 true,表示请求时 cookie 需要进行签名。

ctx.cookies.set(name, value, [options])

设置 cookie 中名为 name 的值,options 为可选参数:

  • signed: 是否要做签名
  • expires: cookie 有效期时间
  • path: cookie 的路径,默认为 /’
  • domain: cookie 的域
  • secure: false 表示 cookie 通过 HTTP 协议发送,true 表示 cookie 通过 HTTPS 发送。
  • httpOnly: true 表示 cookie 只能通过 HTTP 协议发送

注意:Koa 使用了 Express 的 cookies 模块,options 参数只是简单地直接进行传递。

node.js Koa 框架 的 Cookies、表单、文件上传功能详解

ctx.cookies 用来读写 Cookie。看下面的记录网页浏览次数的例子:

 const main = function(ctx) {   
 const n = Number(ctx.cookies.get('view') || 0) + 1;   
 ctx.cookies.set('view', n);   
 ctx.response.body = n + ' views'; }

运行上面的 demo,没刷新一次页面,views 每次都会计数增加 1。

表单处理

Web 应用离不开处理表单。本质上,表单就是 POST 方法发送到服务器的键值对。koa-body 模块可以用来从 POST 请求的数据体里面提取键值对。

看下面的 body.js 文件中的代码:

 const koaBody = require('koa-body'); 
 const main = async function(ctx) {   
 const body = ctx.request.body;   
 if (!body.name) ctx.throw(400, '.name required');   
 ctx.body = { name: body.name }; }; 
 app.use(koaBody());

部署这个文件。

 $ node body.js

打开另一个命令行窗口,运行下面的命令。

 $ curl -X POST --data "name=lisa33xiaoq.net" 127.0.0.1:3000 {"name":"lisa33xiaoq.net"}  
 $ curl -X POST --data "name" 127.0.0.1:3000 name required

上面代码使用 POST 方法向服务器发送一个键值对,会被正确解析。如果发送的数据不正确,就会收到错误提示。

文件上传

基本上所有的框架都会对文件上传有所封装。koa 框架也不例外。

koa-body 模块还可以用来处理文件上传。

看下面的 file.js 文件中的代码:

 const os = require('os'); 
 const path = require('path'); 
 const koaBody = require('koa-body'); 
 const main = async function(ctx) {   
 const tmpdir = os.tmpdir();   
 const filePaths = [];   
 const files = ctx.request.body.files || {};   
 for (let key in files) {     
 const file = files[key];     
 const filePath = path.join(tmpdir, file.name);     
 const reader = fs.createReadStream(file.path);     
 const writer = fs.createWriteStream(filePath);     
 reader.pipe(writer);     
 filePaths.push(filePath);   }   
 ctx.body = filePaths; }; 
 app.use(koaBody({ multipart: true }));

部署上面的 file.js 文件。

 $ node file.js

打开另一个命令行窗口,运行下面的命令,上传一个文件。注意,/path/to/file 要更换为真实的文件路径。

 $ curl --form upload=@/path/to/file http://127.0.0.1:3000 ["/tmp/file"]

然后我们到/tmp/file 文件目录中查看发现文件已经成功上传了。到这里,koa 框架的所有内容我们都学习完成了。附上前面几篇文章的地址:

1.NODE.JS KOA 框架 的基本用法

2.NODE.JS KOA 框架 的路由用法

3.NODE.JS KOA 框架 的中间件用法

4.NODE.JS KOA 框架 的 COOKIES、表单、文件上传功能详解

5.NODE.JS KOA 框架 的错误处理

6.闲谈 NODE.JS 的 KOA 框架和 EXPRESS 框架

7.NODE.JS 对接 HYBRID 框架 VASSONIC 教程

【注:本文源自网络文章资源,由站长整理发布】


web 前端中文站 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:node.js Koa 框架 的 Cookies、表单、文件上传功能详解
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址