Я не могу загрузить какой-либо файл или изображение, используя пакет multer node в Mac. Но тот же код отлично работает в Windows. Я использую почтальона для вызова API. когда я нажимаю API и внутри журнала консоли, я получаю неопределенный для req.file
const express = require('express');
const app = express();
const multer = require('multer');
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads')
},
filename: function (req, file, cb) {
console.info(file)
// const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9)
cb(null, file.originalname)
}
})
const upload = multer({storage: storage})
app.post('/post', upload.single('avatar'), (req,res)=>{
console.info(req.file)
if (!req.file) {
return res.status(400).send([{ msg: "File is missing",err }])
}
else{
return res.status(200).send([{ msg: "working", }])
}
});
app.listen(3000,(err,succes)=>{
if (err) {
console.info(err)
}else{
console.info("Server is running in port number",3000)
}
});
🤔 А знаете ли вы, что...
С Node.js можно легко интегрировать с базами данных, такими как MongoDB и MySQL.
Не могли бы вы написать небольшой клиент Nodejs и протестировать его? Это делается для того, чтобы исключить что-то специфическое для почтальона.
Код ниже представляет собой пример клиента Nodejs.
client.js //запускаем его как клиент узла
const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');
const formdata = new FormData();
// adding the file
formdata.append('avatar', fs.createReadStream('./avatar.jpg'));
axios
.post('http://localhost:3000/post', formdata)
.then((data) => {
console.info(data.data);
})
.catch((error) => {
console.info(error);
});