unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at testPDSNotExplode 36 lines 1.2 kB view raw
1import multer from 'multer' 2import generateRandomString from './generateRandomString.js' 3import { completeEnvironment } from './backendOptions.js' 4 5const imageStorage = multer.diskStorage({ 6 // Destination to store image 7 destination: 'uploads', 8 filename: (req, file, cb) => { 9 const originalNameArray = file.originalname.split('.') 10 const extension = originalNameArray[originalNameArray.length - 1] 11 const randomText = generateRandomString() 12 cb(null, `${Date.now()}_${randomText}.${extension.toLocaleLowerCase()}`) 13 } 14}) 15 16function uploadHandler(extensionsRegex?: RegExp, storage?: multer.StorageEngine) { 17 return multer({ 18 storage: storage ? storage : imageStorage, 19 limits: { 20 fileSize: completeEnvironment.uploadLimit * 1024 * 1024 // 15 MB. 21 }, 22 fileFilter(req, file, cb) { 23 const name = file.originalname.toLowerCase() 24 const isFileAllowed = !( 25 name.match( 26 extensionsRegex 27 ? extensionsRegex 28 : /\.(png|jpg|jpeg|gifv|gif|webp|avif|av1|mp4|mov|webm|mkv|aac|mp3|wav|ogg|oga|m4a|pdf)$/ 29 ) == null 30 ) 31 cb(null, isFileAllowed) 32 } 33 }) 34} 35 36export default uploadHandler