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

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

更多精彩内容请看 web前端中文站
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教程

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

0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到