Człowieku, biegniesz po złej ścieżce. Wyjaśniłem już w poprzednim pytaniu, że Multer jest używany do zapisywania plików w systemie plików, a nie bezpośrednio do bazy danych. W tym celu musisz użyć GRIDFS.
Przechodząc do twojego aktualnego pytania.
app.post('/Upload', upload.single('solution') ,function (req, res, next) {
console.log(req.file);
});
Tutaj upload.single('solution')
- wywołuje funkcję Upload i podana nazwa pliku jest rozwiązaniem, ale oczywiste jest, że nie jest ona tutaj dostępna.
użyj tego typu formatu - dokumentacja Multera
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 })
Część do przechowywania służy do podania ścieżki, w której należy zapisać plik, a sekcja nazwy pliku służy do wprowadzania zmian w nazwie pliku, którą chcesz mieć.
Przeczytaj dokumentację, ponieważ to pomoże. Kiedy korzystamy z modułów stron trzecich, musimy potwierdzić informacje, które już podali, abyśmy mogli łatwo korzystać z ich pracy.
Pozwól, że ci to ułatwię. Oto gotowy kod, który działa.
Multer wyrzuca dziwny błąd podczas przesyłania pliku za pomocą przesyłania plików ng
Sprawdź ten wątek. Pytanie zostało postawione przeze mnie - problem polegał na tym, że wysyłałem pliki w formacie tablicy, tak jak w wielu plikach na raz. Jeśli tego nie robisz, po prostu zmień segment ng-file-upload, aby użyć przykładu pojedynczego przesyłania, a po stronie serwera kod nodejs zastąp .array
z .single
i wszystko będzie działać tak, jak chcesz - biorąc pod uwagę, że chcesz używać systemu plików do przechowywania plików.
Powtarzam, że ta metoda nie pomoże ci bezpośrednio zapisać pliku w mongodb.
Daj mi znać, jeśli potrzebujesz dalszych wyjaśnień.