如何使用橡木/面额访问表单主体

时间:2020-06-13 17:56:38

标签: deno oak

我用的是橡木/ deno。我有一个从提供的ejs文件提交的表单。如何访问表单正文?当我将其登录到控制台时,它将打印:{type: "form", value: URLSearchParamsImpl {} } 帖子处理程序如下所示。

 router.post("/add", async (ctx: RouterContext) => {
const body = (await ctx.request.body())
console.log(body)
ctx.response.redirect("/");

});

2 个答案:

答案 0 :(得分:1)

如果您要发送x-www-form-urlencoded,只需使用body.value中可用的URLSearchParams实例。

body.value.get('yourFieldName')

如果body.type === "form-data"您可以使用.value.read(),那么您将获得multipart/form-data字段

router.post("/add", async (ctx: RouterContext) => {
  const body = await ctx.request.body({ type: 'form-data '});
  const formData = await body.value.read();
  console.log(formData.fields);
  ctx.response.redirect("/");
});

答案 1 :(得分:0)

类似的东西会返回值

看起来body.value是通过.get(<key>)访问的,或者可以用.entries()Object.fromEntries()进行迭代

async register(context: RouterContext) {
  const body = context.request.body({ type: 'form' })
  const value = await body.value

  console.log(value.get('email'))

  for (const [key, val] of value.entries()) {
    console.log(key, val)
  }

  const args = Object.fromEntries(value)
  console.log(args)

  context.response.body = 'test'
}
相关问题