crm-api-template-generator/backend/utils/fileUpload.js

40 lines
972 B
JavaScript

const multer = require('multer')
const path = require('path')
const CustomError = require('../errors')
const fs = require('fs')
const dirExist = require('./dirExist')
const createDir = require('./createDir')
//Destination to store the file
const fileStorage = multer.diskStorage({
destination: function (req, file, cb) {
const dir = path.join(process.cwd(), 'public', 'jsonfiles')
if (!dirExist(dir)) {
createDir(dir)
}
cb(null, dir)
},
filename: function (req, file, cb) {
cb(null, Date.now() + String(Math.floor(Math.random() * 1000)) + path.extname(file.originalname))
}
})
const fileUpload = multer({
storage: fileStorage,
fileFilter(req, file, cb) {
if (!file.originalname.match(/\.(json)$/i)) {
return cb(new CustomError.BadRequestError(`'Invalid file type. Send only .json file!`))
}
cb(undefined, true)
}
})
module.exports = fileUpload