я хочу сохранить изображение на nodejs, я отправляю файл по почте, вот так:
...
flag: File;
flaginput(event){
this.flag = event.target.files[0];
}
submit(){
this.http.post('localhost...', this.flag).subscribe( x => {
console.info(x.response)});
и в нодджс
const multer = require('multer');
const storage = multer.diskStorage({
destination: function(req,file,cb){
cb(null, './imagenes/');
},
filename: function(req,file,cb){
cb(null, file.originalname)
}
});
const upload = multer({storage: storage });
module.exports = (app) =>{
app.post("/equipos", upload.single(), (req, res, next) => {
console.info(req.file)
base.query('SELECT * FROM names', (error, result) =>{
if (error){
res.json({mensaje: "error", datos: error});
}else{
res.json({mensaje: "equipo creado"});
}
})
})
но я не уверен, как сохранить файл или почему он не сохраняется, на консоли это не похоже на какую-либо ошибку, на nodejs, когда я пытаюсь использовать console.info(req.file) undefined
я хочу сохранить файл в папке ./imagenes.
я также пытаюсь отправить его как json {flag: this.flag}, а также пытаюсь отправить его в виде данных, изменяя upload.single() на upload.single('flag'), но не работает
Спасибо за помощь
Мультер работает с formData.
Ваша конфигурация multer diskStorage выглядит нормально, но вы должны использовать formData.
Запрос на стороне клиента
upload(img: File) {
const formData: FormData = new FormData();
formData.append("img", img);
return this.httpClient.post('http://localhost:3000/equipos', formData);
}
Сторона сервера
app.post('/equipos', upload.single('img'), async (req, res) => {
return res.status(200)
.json('Image saved')
})