Search code examples
node.jsexpressrequestmulter

req.files returning Cannot read properties of undefined (reading '0')


i am using multer storage and its working fine but the error here when the input fields is empty it keeps sending "File has been uploaded" , what i want to make when the request files is undefined or null it returns "Fields is empty" other than that it checks if its an image or pdf file

const uploadFiles = async (req, res) => {

try {
    
    await upload(req, res);
    console.log(req.files);
  
    if (req.files == undefined) {
        return res.send({message : "Fields is Empty"})
    }
    if (req.files !== undefined) {
        if (req.files.bookCover[0].fieldname == "bookCover" && req.files.bookCover[0].bucketName != 'photos' ) {
            return res.send({ message: "Please Upload an Image" })
        }
        if (req.files.bookFile[0].fieldname == "bookFile" && req.files.bookFile[0].bucketName != 'pdf') {
            return res.send({ message: "Please Upload a PDF File" })
        }
    }
    res.send({ message : "File has been uploaded. "})
} catch (error) {
    console.log(error);
    return res.send({ message : "Error Uploading the File !"})
}

}

it keeps giving me this error Cannot read properties of undefined (reading '0') so i wrapped them inside another if statement if fields is not undefined it checks if its an image or pdf file uploaded

but its not working


Solution

  • This is the fix i made thank to @CherryDT

    try{
        await upload(req, res);
        console.log(req.files);
        if (!req.files.bookCover ) {
            return res.send({ message: "Book Cover is Empty" });
        } else if (!req.files.bookFile) {
            return res.send({ message: "Book File is Empty" });
        }
        else {
        if (req.files.bookCover?.[0].fieldname == "bookCover" && req.files.bookCover?.[0].bucketName != 'photos' ) {
            return res.send({ message: "Please Upload an Image" })
        }
        if (req.files.bookFile?.[0].fieldname == "bookFile" && req.files.bookFile?.[0].bucketName != 'pdf' ) {
            return res.send({ message: "Please Upload a PDF File" })
            }
        }
        res.send({ message: "File has been uploaded. " })
    }
     catch (error) {
        console.log(error);
        return res.send({ message : "Error Uploading the File !"})
    }