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