Fastify - 如何使用 fastify-multipart 获取非文件字段

Van*_*anz 3 javascript node.js fastify fastify-multipart

如何从请求中访问非文件字段的文本?(我正在使用Insomia)

我们使用 Insomia 的请求 在此输入图像描述

我们可以通过循环各部分来访问文件字段。使用const parts = await req.files();。

索引.js

    import Fastify from "fastify";
    import FastifyMultipart from "fastify-multipart";
    
    export const fastify = await Fastify();
    fastify.register(FastifyMultipart);
Run Code Online (Sandbox Code Playgroud)

控制器/property.js

    export const addProperty = async function (req, res) {
      try {
        // WE ACCESS FILES OF MULTIPART FORM REQUEST HERE
        const parts = await req.files();
        for await (const data of parts) {
          console.log("*******File being access**********");
          console.log(data.filename); // access file name
          ...
        }
        // HOW DO WE ACCESS OTHER *NON_FILES* FIELDS?
        ...
        res.status(201).send({ message: "Property Added!." });
      } catch (error) {
        res.send(error);
      }
    };
Run Code Online (Sandbox Code Playgroud)

在控制器脚本中,我们使用await req.files();.

我们如何访问非文件字段,例如文本

vir*_*hra 10

有两种方法可以获取文档中给出的其他数据https://github.com/fastify/fastify-multipart

  1. 在文件之前传递其他字段 在图像之前传递名称

现在您可以访问 data.fields 中的名称

const data = await req.file();
console.log(data.fields.name.value); // virender
Run Code Online (Sandbox Code Playgroud)
  1. 你可以把它贴在身体上
fastify.register(require('fastify-multipart'), { attachFieldsToBody: true });
const file = req.body.image1;
const name = req.body.name.value
Run Code Online (Sandbox Code Playgroud)