sql >> Databasteknik >  >> NoSQL >> MongoDB

Lagra en fil i MongoDB med Multer i Mongoose

Man du springer på fel väg. Jag har redan förklarat i din tidigare frågeförfrågan att Multer används för att spara filer i fildisksystem och inte direkt i din databas. För det måste du använda GRIDFS.

Kommer till din nuvarande fråga.

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

Här är upload.single('solution') - anropar en funktion Ladda upp och filnamnet som skickas är lösning men det är uppenbart nog att det inte är tillgängligt här.

använd denna typ av format - dokumentation av 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 })

Lagringsdelen där används för att ge sökvägen till var din fil måste sparas och filnamnssektionen används för att göra ändringar i filnamnet som du vill ha.

Läs dokumentationen för det hjälper. När vi använder tredjepartsmoduler måste vi bekräfta den information de redan har gett så att vi enkelt kan använda deras arbete.

Låt mig göra det lättare för dig. Här finns färdig kod som fungerar.

Multer kastar konstigt fel när filen laddas upp via ng-filuppladdning

Gå och kolla den tråden. Frågan togs upp av mig - problemet där var att jag skickade filer i arrayformat, som i flera filer samtidigt. Om du inte gör det, byt bara ng-file-upload-segmentet för att använda exemplet för enkel uppladdning och på serversidan ersätter nodejs kod .array med .single och saker och ting kommer att fungera som du vill att de ska fungera - givet att du vill använda fildisksystem för att lagra filer.

Jag upprepar att den här metoden inte hjälper dig att spara filen i mongodb direkt.

Låt mig veta om du behöver ytterligare förtydliganden.



  1. Redis Keyspace Notifications med flushdb

  2. Mongoose Schema har inte registrerats för modell

  3. Meteor mongo uppdaterar kapslad array

  4. MongoDB:s prestanda på aggregeringsfrågor