0

I can upload one file, but I can't seem to upload multiple, it gets stuck on the first file.

Client

 async function uploadFiles() {
    let formData = new FormData();

    formData.append("recordUid", recordUid);
    formData.append("fieldUid", fieldUid);

    [...pendingUploadFiles].forEach((file) => {
        formData.append("uploaded_files", file);
    });

    await fetchPostFiles("/api/files", formData);
}

Server

const busboy = require("busboy");
const path = require("path");
const fs = require("fs");

router.post("/api/files", async (req, res, next) => {
    try {
        let bb = busboy({
            headers: req.headers,
            limits: {
                fileSize: 10 * 1024 * 1024, // 10 mb
            },
        });

        bb.on("file", (fieldname, file, filename, encoding, mimetype) => {
            let parts = filename.filename.split(".");
            let name = parts[0];
            let extension = parts[parts.length - 1]; // without the . from .jpeg

            let finalName = `${name}-${+new Date()}.${extension}`;

            let saveTo = `${filesFolderPath}${finalName}`;

            // Open writeable stream to path
            let writeStream = fs.createWriteStream(saveTo);

            // Pipe the file to the opened stream
            file.pipe(writeStream);

            // Check for errors
            writeStream.on("error", (err) => {
                console.log(err);
            });
        });

        bb.on("finish", function () {
            console.log("uploaded");
        });

        return req.pipe(bb);
});
Ivan
  • 1,967
  • 4
  • 34
  • 60
  • `formData.append("uploaded_files", file);` overrides the `uploaded_files` every execution. You just have to use `fileToUpload[]` instead of `fileToUpload`! – stacj Feb 03 '22 at 10:10
  • Can you please post how the code would look like? I am not sure I follow. – Ivan Feb 03 '22 at 10:26

0 Answers0