1

I have been working on a project and I want to upload PDF to it. For handling POST request in the backend, I used multer library for uploading files. I tested this http://localhost:3000/schedule/upload endpoint in the postman, and it is working fine, apparently while requesting this same endpoint from Front-end it is giving this error Cannot read properties of undefined (reading 'buffer'). I searched all over the internet and I couldn't able to find a single solution to this problem. So, if someone has any idea what is going wrong here, Please tell me. It will be a great help to me.

Client-side Code

const saveFile = async () => {

        let file = document.getElementById("fileInp").files[0];
        console.log('inside  ' + file)
        let formdata = new FormData();
        
        formdata.append("schedule", file);
        

        const config = {
            url : '/schedule/upload',
            method : 'post',
            data :  {
                filename : 'schedule',
                formdata
            },
            headers : {
                Authorization : `Bearer ${token}`,
                "Content-Type": "multipart/form-data"
            }
        }

        try {
           const res = await axios(config);
           console.log(res.data);
        } catch (e) {
            console.log(e);
        }
        return;
    }

Server-side Code


const upload = multer({
    limits : 1000000
})

fileRouter.post("/schedule/upload",auth,upload.single("schedule"),async(req,res)=>{
    await File.findOneAndUpdate({fileName : "schedule"},{fileName : req.body.filename, file : req.file.buffer},{upsert : true}).exec();
    res.status(200).send("Schedule uploaded");
})

1 Answer 1

1

It means the file is not parsed, which means the request is not correct. Change data property to include only formData, no need to include filename, it's already within formData, and multipart header is also not needed.

Try changing config variable to this:

const config = {
    url: '/schedule/upload',
    method: 'post',
    data: formdata,
    headers: {
        Authorization: `Bearer ${token}`
    }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.