Evan
Evan

Reputation: 2507

Fastify - How to get non-file fields using fastify-multipart

How to access text from request that are non-file fields? (I am using Insomia)

Our request using Insomia enter image description here

We are able to access file fields by looping through parts. using const parts = await req.files();.

index.js

    import Fastify from "fastify";
    import FastifyMultipart from "fastify-multipart";
    
    export const fastify = await Fastify();
    fastify.register(FastifyMultipart);

controllers/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);
      }
    };

in the controllers script we access files using await req.files();.

How do we access the fields that are non-file, like text

Upvotes: 3

Views: 6551

Answers (1)

virender nehra
virender nehra

Reputation: 612

There are two ways to get other data it is given in the docs https://github.com/fastify/fastify-multipart

  1. pass the other fields before file Passing the name before image

Now you can access name in data.fields

const data = await req.file();
console.log(data.fields.name.value); // virender
  1. you can attach it to body
fastify.register(require('fastify-multipart'), { attachFieldsToBody: true });
const file = req.body.image1;
const name = req.body.name.value

Upvotes: 12

Related Questions