不管用this.ctx.body还是this.params都获取不到参数
回复 (18)
S
@cmygit 你说的 "但因为文档router的章节会引导到这个crfs表单提交的的示例",没看到这个文档中有这个明确的 form 表单的例子呢,不知道是不是说的这里: https://github.com/eggjs/examples/blob/master/multipart/app/view/page/form.html
C
@atian25 大大,你好,虽然我直到这个坑是属于基础知识问题,但因为文档router的章节会引导到这个crfs表单提交的的示例,总有人会踩...我建议应该在文档中标注一下设置enctype="multipart/form-data"是针对文件上传的。
C
是不是form表单设置了enctype="multipart/form-data"属性? 我也遇到这个问题,由于楼主没有上代码,不知道你实际问题是啥,我说下我遇到的问题吧! 看egg的文档的时候,看到router那里,直接提交提交post请求是报错的,因为文档有说明,安全威胁 CSRF 的防范。 然后在该章节的示例代码中,form表单是这个样子的:
title: file: upload 关键是enctype="multipart/form-data" enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。 默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。 属性取值: 1.application/x-www-form-urlencoded:在发送前编码所有字符(默认) 2.multipart/form-data :不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。 3.text/plain:空格转换为 "+" 加号,但不对特殊字符编码。 结论:示例中是文件上传,所以设置了enctype="multipart/form-data",不对字符编码(所以ctx.request.body获取不到值了?)。如果是普通的表单提交,不要设置enctype属性(其实有个默认值),在发送前编码所有字符!这样ctx.request.body就能获取值了。A
@sandisen 自己开一个帖子去回复啊,不要到处影响别人
A
F
引用 atian25一般提问总要附上代码吧,给个截图怎么猜。。 ctx.body 是输出的,不是读取的,ctx.body = 'hi, egg'; ctx.request.body 是输入的 POST body ...
@atian25 这个文档我也看过,可能是用法有点问题,已经解决了
F
A
一般提问总要附上代码吧,给个截图怎么猜。。
ctx.body是输出的,不是读取的,ctx.body = 'hi, egg';ctx.request.body是输入的 POST bodyctx.query才是输入的查询参数/news?page=12->ctx.query.pagectx.param是路由匹配的,来自于 koa-router,/users/:id->ctx.param.id
上面这些其实都不属于 egg 的扩展了,就是 koa 的基础。建议再回去看看 koa 和 egg 的文档。 http://koajs.com/#request
F
L
F
F
F
引用 lzq920那看你是什么提交的了。如果是form表单提交的,就用ctx.request.body就取到了
@461534898 我就是用这个没取到。。。我也不知道为什么这么简单的东西我会遇到问题。。。
L
那看你是什么提交的了。如果是form表单提交的,就用ctx.request.body就取到了
F
F
this.ctx.request 和 this.ctx.req里面也没有,是不是我什么地方配置有问题,
参与回复
登录后即可参与回复。登录