MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Memorizzazione di un file in MongoDB utilizzando Multer in Mongoose

Amico, stai correndo sulla strada sbagliata. Ho già spiegato nella tua precedente richiesta di domanda che Multer viene utilizzato per salvare i file nel file disk system e non direttamente nel database. Per questo devi usare GRIDFS.

Venendo alla tua domanda attuale.

app.post('/Upload', upload.single('solution') ,function (req, res, next) {
    console.log(req.file);
});

Qui il upload.single('solution') - chiama una funzione Upload e il nome del file passato è una soluzione ma è abbastanza ovvio che non è disponibile qui.

usa questo tipo di formato - documentazione di Multer

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now())
  }
})

var upload = multer({ storage: storage })

La parte di archiviazione viene utilizzata per fornire il percorso in cui il file deve essere salvato e la sezione del nome del file viene utilizzata per apportare modifiche al nome del file che si desidera avere.

Si prega di leggere la documentazione perché questo aiuterà. Quando utilizziamo moduli di terze parti, dobbiamo riconoscere le informazioni che hanno già fornito in modo da poter utilizzare facilmente il loro lavoro.

Lascia che ti renda tutto più facile. Ecco il codice pronto che funziona.

Multer genera uno strano errore durante il caricamento del file tramite il caricamento di file ng

Vai a controllare quel thread. La domanda è stata sollevata da me:il problema era che stavo inviando file in formato array, come in più file contemporaneamente. Se non lo stai facendo, cambia il segmento ng-file-upload per utilizzare l'esempio demo di caricamento singolo e sul lato server il codice nodejs sostituisci .array con .single e le cose funzioneranno nel modo in cui desideri che funzionino, dato che desideri utilizzare il file disk system per archiviare i file.

Ripeto che questo metodo non ti aiuterà a salvare direttamente il file in mongodb.

Fammi sapere se hai bisogno di ulteriori chiarimenti.