使用 multer 包在 node express 中使用 api 上传图像
Uploading image using api in node express using multer package
这个问题之前有人问过。但由于我的问题没有得到解决,我再次询问。
我正在尝试使用 multer 包作为表单数据为 属性 上传图像,这样我就可以在数据库中存储其他数据和图像路径。我正在使用节点快递。
我的api--
api.post('/service', upload.single('servicesImage'),
(req, res, next) => {
console.log(req.file);
Company.find({ domain: req.headers.domain },
(err, company) => {
const servicecontent = new Servicecontent({
description: req.body.description,
created_at: Date.now(),
created_by: req.body.user_id,
company_domain: req.headers.domain,
company_uuid: company[0].uuid,
image: req.file.path,
})
servicecontent.save(err => {
console.log(err);
});
res.json({ status: "success" });
});
});
我看了一个教程,然后我添加了这些代码来上传图片和其他选项--
const storage = multer.diskStorage({
destination: function(req, file, cb){
cb(null, './src/uploads/');
},
filename: function(req, file, cb){
cb(null, new Date().toISOString()+ file.originalname);
},
});
const upload = multer({storage: storage, limits:{
fileSize: 1024*1024*5
},
fileFilter: fileFilter
});
const fileFilter = (req, file, cb) =>{
if(file.mimetype=== 'image/jpeg' || file.mimetype=== 'image/png'){
cb(null,true);
}else{
cb(null,false);
}
};
现在当我通过 Postman 发送数据和图像时,来自 console.log(req.file)
正如我在教程中看到的那样,我得到了有效数据。 Api 响应没有任何错误,在数据库中我可以看到所有数据都已存储,包括图像路径。但我面临的问题是 src/upload
文件夹是空的,没有上传图片。
N.B. -- 我用的是linux18.04 Os,fs包安装不上。所以 src/upload
文件夹在我发送请求时没有创建,所以我从文件夹创建了这个目录。
编辑: 我现在可以使用此代码上传图片,我不完全知道为什么这在早些时候不起作用。如果可能的话,我应该关闭这个问题。
我现在可以使用此代码上传图片,但我不完全知道为什么之前无法使用。如果可能的话,我应该关闭这个问题。
试试这个来存储图像。
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
console.log(file);
cb(null, makeid(3) + file.originalname)
}
})
var upload = multer({ storage: storage })
`
这个问题之前有人问过。但由于我的问题没有得到解决,我再次询问。
我正在尝试使用 multer 包作为表单数据为 属性 上传图像,这样我就可以在数据库中存储其他数据和图像路径。我正在使用节点快递。
我的api--
api.post('/service', upload.single('servicesImage'),
(req, res, next) => {
console.log(req.file);
Company.find({ domain: req.headers.domain },
(err, company) => {
const servicecontent = new Servicecontent({
description: req.body.description,
created_at: Date.now(),
created_by: req.body.user_id,
company_domain: req.headers.domain,
company_uuid: company[0].uuid,
image: req.file.path,
})
servicecontent.save(err => {
console.log(err);
});
res.json({ status: "success" });
});
});
我看了一个教程,然后我添加了这些代码来上传图片和其他选项--
const storage = multer.diskStorage({
destination: function(req, file, cb){
cb(null, './src/uploads/');
},
filename: function(req, file, cb){
cb(null, new Date().toISOString()+ file.originalname);
},
});
const upload = multer({storage: storage, limits:{
fileSize: 1024*1024*5
},
fileFilter: fileFilter
});
const fileFilter = (req, file, cb) =>{
if(file.mimetype=== 'image/jpeg' || file.mimetype=== 'image/png'){
cb(null,true);
}else{
cb(null,false);
}
};
现在当我通过 Postman 发送数据和图像时,来自 console.log(req.file)
正如我在教程中看到的那样,我得到了有效数据。 Api 响应没有任何错误,在数据库中我可以看到所有数据都已存储,包括图像路径。但我面临的问题是 src/upload
文件夹是空的,没有上传图片。
N.B. -- 我用的是linux18.04 Os,fs包安装不上。所以 src/upload
文件夹在我发送请求时没有创建,所以我从文件夹创建了这个目录。
编辑: 我现在可以使用此代码上传图片,我不完全知道为什么这在早些时候不起作用。如果可能的话,我应该关闭这个问题。
我现在可以使用此代码上传图片,但我不完全知道为什么之前无法使用。如果可能的话,我应该关闭这个问题。
试试这个来存储图像。
var storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/')
},
filename: function (req, file, cb) {
console.log(file);
cb(null, makeid(3) + file.originalname)
}
})
var upload = multer({ storage: storage })
`