NextJS app directory API for uploading media to Media field of collection inside an repeating component

System Information
  • Strapi Version: 4.12.7
  • Operating System: Windows 11
  • Database: sqlite
  • Node Version: 16.17.1
  • NPM Version: 8.19.2
  • Yarn Version: 1.22.19

i have an api for creating orders from nextjs with files but unfortunately the files were not uploaded or added in the Media field of Order collection.

below is how i setup my FormData

const handlePayment = async () => {
    const data = {
      orderId: uuidv4(),
      items: order.items.map((item) => ({
        productId: item.id,
        productName: item.name,
        price: item.price,
        businessName: item.businessName,
        modify: item.modifications.map((modify) => ({
          modifyName: modify.attributes.name,
          price: modify.attributes.price,
          requestDescription: modify.attributes.requestDescription,
          requestFiles: modify.attributes.requestFiles,
        })),
        addon: item.addons.map((add) => ({
          addonName: add.attributes.name,
          price: add.attributes.price,
          quantity: add.quantity,
          requestDescription: add.attributes.requestDescription,
          requestFiles: add.attributes.requestFiles,
        })),
      })),
      customerDetails: order.user,
    };

    console.log(data);

    const formData = new FormData();
    formData.append("data", JSON.stringify(data));

    data.items.map((item, i) => {
      item.modify.map((mod, m) => {
        const modFiles = mod.requestFiles;
        if (modFiles) {
          for (let ii = 0; ii < modFiles.length; ii++) {
            const modFieldName = `files.items[${i}].modify[${m}].requestFiles`;
            formData.append(modFieldName, modFiles[ii]);
          }
        }
      });
      item.addon.map((add, a) => {
        const addFiles = add.requestFiles;
        if (addFiles) {
          for (let ii = 0; ii < addFiles.length; ii++) {
            const addFieldName = `files.items[${i}].addon[${a}].requestFiles`;
            formData.append(addFieldName, addFiles[ii]);
          }
        }
      });
    });

    try {
      const response = await axios.post("/checkout/api/order", formData);
      console.log("Entry created:", response);
    } catch (error) {
      console.error("Error creating entry:", error);
    }
  };
1 Like

adding information here

error: 3 relation(s) of type plugin::upload.file associated with this entity do not exist

i think the main question i would really need some help is if im targeting the field correctly?

here is my content type for the collection

both are “multiple media” type