我无法在 mac 中使用 multer 节点包上传任何文件或图像。但同样的代码在 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.log(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.log(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.log(err)
}else{
console.log("Server is running in port number",3000)
}
});
能否请您编写一个小型 Nodejs 客户端并进行测试。这是为了排除邮递员是否有特定的情况。
下面的代码是示例 Nodejs 客户端。
client.js //作为 node 客户端运行
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.log(data.data);
})
.catch((error) => {
console.log(error);
});