#node.js #typescript #mongodb #express #multer
Вопрос:
я загружаю изображение с помощью multer , expresss и машинописного текста. в моем файле 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 amp;amp; 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,
...
...
...
я предполагаю , что проблема в функции хранения, однако я не могу указать пальцем на нужное место.
заранее спасибо.