40 lines
972 B
JavaScript
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
|