deafmissoula-website/server/dist/middleware/upload.js

35 lines
No EOL
2 KiB
JavaScript

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uploadMinutes = exports.uploadLogo = exports.uploadPhoto = exports.uploadHeadshot = void 0;
const multer_1 = __importDefault(require("multer"));
const path_1 = __importDefault(require("path"));
const fs_1 = __importDefault(require("fs"));
const uploadsBase = path_1.default.join(__dirname, '../../../uploads');
function storageFor(subdir) {
return multer_1.default.diskStorage({
destination: (_req, _file, cb) => {
const dir = path_1.default.join(uploadsBase, subdir);
fs_1.default.mkdirSync(dir, { recursive: true });
cb(null, dir);
},
filename: (_req, file, cb) => {
const unique = `${Date.now()}-${Math.round(Math.random() * 1e6)}`;
cb(null, unique + path_1.default.extname(file.originalname));
},
});
}
const imageFilter = (_req, file, cb) => {
const allowed = /jpeg|jpg|png|gif|webp/;
cb(null, allowed.test(path_1.default.extname(file.originalname).toLowerCase()) && allowed.test(file.mimetype));
};
const pdfFilter = (_req, file, cb) => {
cb(null, file.mimetype === 'application/pdf' || path_1.default.extname(file.originalname).toLowerCase() === '.pdf');
};
exports.uploadHeadshot = (0, multer_1.default)({ storage: storageFor('headshots'), fileFilter: imageFilter, limits: { fileSize: 5 * 1024 * 1024 } });
exports.uploadPhoto = (0, multer_1.default)({ storage: storageFor('photos'), fileFilter: imageFilter, limits: { fileSize: 10 * 1024 * 1024 } });
exports.uploadLogo = (0, multer_1.default)({ storage: storageFor('sponsors'), fileFilter: imageFilter, limits: { fileSize: 5 * 1024 * 1024 } });
exports.uploadMinutes = (0, multer_1.default)({ storage: storageFor('minutes'), fileFilter: pdfFilter, limits: { fileSize: 20 * 1024 * 1024 } });
//# sourceMappingURL=upload.js.map