MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

TypeError:пътят трябва да бъде низ или буфер MEAN стек

За да качите файл, трябва да го обвиете във FormData пример, както следва:

interface Profile {
   photo: File;
}

updatePhoto(profile: Profile, id: string) {
    const body = new FormData();
    body.append('photo',profile.photo);
    return this.http.post(`http://localhost:3000/profile/photo/${id}`, body,)
        .map((response: Response) => response.json())
        .catch((error: Response) => {
            return Observable.throw(error.json());
        });
}

Освен това вашият бекенд най-вероятно се проваля в следния раздел:

user.img.data = fs.readFileSync(req.body.photo);

Имайки предвид, че сега качвате формуляр с multipart/form-data кодиране, ще трябва да използвате някакъв мидълуер, за да анализирате заявката във вашия бекенд, както е посочено в expressjs doc

Можете да използвате multer или express-fileupload

Ако изберете втория, ще ви трябва следното:

const fileUpload = require('express-fileupload');

router.use(fileUpload());// use express-fileupload as default parser for multipart/form-data encoding

router.post('/photo/:id', (req, res) => {
User.find({ _id: req.params.id })
    .exec((err, user) => {
        if (err) {
            return res.status(500).json({
                title: 'An error occured',
                error: err
            });
        }
        user.img.data = req.files.photo.data;
        user.img.contentType = 'image/png';
        user.save((err, obj) => {
            if (err) {
                throw err
            }
            console.log('success')
        })
    });
});



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Защо този тип mongo не работи в PHP?

  2. Качване на файл Node.js (Express 4, MongoDB, GridFS, GridFS-Stream)

  3. Как да съкратим число до 3 знака след десетичната запетая

  4. Node.js открива кога са завършени две mongoose find

  5. Премахване на дубликати от база данни MongoDB 4.2