我使用 multer 、expresss 和 typescript 上传图像。 在我的 console.log \ response 中,服务器似乎正确地接收了图像 但是,图像未保存在我的服务器目录中。
这是我的代码: 我的上传功能:
const storage = multer.diskStorage({
destination: function (req , file , cb) {
cb(null , 'uploads/')
} ,
filename: function (req: any, file: any, cb: any) {
cb(null, file.originalname)
}
})
function checkFileType(file: any , cb: any)
{
const filetypes= /jpg|jpeg|png/
const extname= filetypes.test(path.extname(file.originalname).toLowerCase())
const mimetype = filetypes.test(file.mimetype)
if(extname && mimetype) {
return cb(null, true)
} else{ cb('images only')}
}
const upload = multer({
storage,
fileFilter: function(req,file,cb) {
checkFileType(file,cb)
}
})
我的控制器:
@controller('/products')
class ProductsClass {
@post('/newProduct')
@bodyValidator('name', 'price', 'desc' , 'pic')
async PostProduct (req: Request,res: Response) {
try {
upload.single('pic')
const product = await ProductModel.create(
{ name: req.body.name,
price: req.body.price,
desc: req.body.desc ,
catagory: req.body.catagory,
pic: req.files
}
)
res.send(product)
} catch (error) {
res.json(error);
}
}
回复:
{
"dateOfEntry": "2021-07-06T14:05:38.263Z",
"lastUpdated": "2021-07-06T14:05:38.263Z",
"_id": "60e46335a87baf1bc430659c",
"desc": "dasda",
"pic": [
{
"fieldname": "pic",
"originalname": "user-3.jpg",
"encoding": "7bit",
"mimetype": "image/jpeg",
"buffer": {
"type": "Buffer",
"data": [
255,
216,
...
...
...
我想问题出在存储功能上,但是我无法将手指指向正确的位置。 提前致谢。