'Multer file buffer missing

the req.file property returned from the following does not contain a buffer property (https://www.npmjs.com/package/multer). So when I try to access req.file.buffer it returns undefined. Can someone help to explain. `

const multer = require('multer')
const uploadtest = multer({
    dest: 'avatar'
})

router.post('/uploadtest', uploadtest.single('upload'), (req, res)=>{
    console.log(req.file)
    req.user.avatar = req.file.buffer
    await req.user.save()
    
    res.send()
    }, (error, req, res, next)=>{ 
        res.status(400).send({error: error.message})
    }
)

` the output from console.log(req.file) is:

{
  fieldname: 'upload',
  originalname: 'sample-doc-file.doc',
  encoding: '7bit',
  mimetype: 'application/msword',
  destination: 'avatar',
  filename: 'e488d6205717d45f397782b79d45fd8e',
  path: 'avatar\\e488d6205717d45f397782b79d45fd8e',
  size: 22528
}


Solution 1:[1]

I experienced the same issue, req.file.buffer was undefined. As Robert pointed out, I was using the dest option for multer. This is what worked for me:

const multer = require('multer');
const upload = multer();

router.post('/', upload.single('image_file'), myController)

then on myController

var buffer = req.file.buffer;

Solution 2:[2]

To get the benefit of await you must write async before (req, res) => {}

Solution 3:[3]

I solved it with another min-height: 0. My problem was that .direct-child was itself a CSS grid, and I needed min-height: 0 on .another-one as well to allow the element to shrink below the content height.

.grid {
  height: 80vh;
  display: grid;
  grid-template-columns: 1fr;
}

.direct-child {
  height: 100%;
  min-height: 0;
  display: grid;
  background-color: slateblue;
}

.another-one {
  height: 100%;
  min-height: 0;
}

.make-this-scrollable {
  height: 100%;
  overflow-y: auto;
}
<div class="grid">
  <div class="direct-child">
    <div class="another-one">
      <div class="make-this-scrollable">
        <div class="content">
          <ul>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
            <li>item</li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</div>

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 yaach
Solution 2 Tyler2P
Solution 3 Sneppy