Changeset fbc8628 in Klonkt
- Timestamp:
- 06/18/2026 08:48:18 AM (3 months ago)
- Branches:
- main
- Children:
- 91d948c
- Parents:
- 03af7f8
- Location:
- src
- Files:
-
- 2 edited
-
routes/admin-audio.js (modified) (4 diffs)
-
views/pages/admin-audio.ejs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/routes/admin-audio.js
r03af7f8 rfbc8628 37 37 const ALLOWED_AUDIO_EXT = new Set(['.mp3', '.m4a', '.mp4', '.aac', '.oga', '.ogg', '.opus', '.flac', '.wav', '.webm']); 38 38 const ALLOWED_COVER_EXT = new Set(['.jpg', '.jpeg', '.png', '.webp', '.gif']); 39 const MAX_AUDIO_BYTES = 50 * 1024 * 1024; // 50 MB 40 const MAX_COVER_BYTES = 5 * 1024 * 1024; // 5 MB 39 const MAX_AUDIO_BYTES = 50 * 1024 * 1024; // 50 MB — gecomprimeerde formaten (mp3/m4a/ogg/…) 40 const MAX_WAV_BYTES = 100 * 1024 * 1024; // 100 MB — WAV is ongecomprimeerd, dus ruimer 41 const MAX_COVER_BYTES = 5 * 1024 * 1024; // 5 MB 42 43 // Per-bestand bovengrens op basis van extensie. multer's globale limiet is de 44 // hoogste (WAV); de echte controle per type gebeurt in de upload-handler. 45 const audioByteLimitFor = (ext) => (ext.toLowerCase() === '.wav' ? MAX_WAV_BYTES : MAX_AUDIO_BYTES); 41 46 42 47 // Multer routes audio + cover into separate dirs based on field name. … … 53 58 const upload = multer({ 54 59 storage, 55 limits: { fileSize: MAX_ AUDIO_BYTES }, // upper bound — per-field check below60 limits: { fileSize: MAX_WAV_BYTES }, // hoogste bovengrens (WAV) — per-type check in de handler 56 61 fileFilter: (req, file, cb) => { 57 62 const ext = path.extname(file.originalname).toLowerCase(); … … 93 98 success: req.query.success || null, 94 99 maxBytesMb: Math.round(MAX_AUDIO_BYTES / 1024 / 1024), 100 maxWavMb: Math.round(MAX_WAV_BYTES / 1024 / 1024), 95 101 }); 96 102 }); … … 119 125 if (coverFile) try { fs.unlinkSync(coverFile.path); } catch {} 120 126 return fail(400, 'missing audio file'); 127 } 128 129 // Per-type audio size check. multer's globale limiet was de WAV-bovengrens 130 // (100MB); gecomprimeerde formaten blijven op 50MB. 131 const audioExt = path.extname(audioFile.originalname).toLowerCase(); 132 const audioLimit = audioByteLimitFor(audioExt); 133 if (audioFile.size > audioLimit) { 134 try { fs.unlinkSync(audioFile.path); } catch {} 135 if (coverFile) try { fs.unlinkSync(coverFile.path); } catch {} 136 return fail(400, `audio te groot (max ${Math.round(audioLimit / 1024 / 1024)}MB voor ${audioExt || 'dit type'})`); 121 137 } 122 138 -
src/views/pages/admin-audio.ejs
r03af7f8 rfbc8628 46 46 <span class="ax-dropzone-icon">🎵</span> 47 47 <strong class="ax-dropzone-title">Sleep audio hierheen</strong> 48 <span class="ax-dropzone-sub">of klik om bestanden te kiezen<br><small>mp3, m4a, ogg, opus, flac , wav · max <%= maxBytesMb %> MB per bestand</small></span>48 <span class="ax-dropzone-sub">of klik om bestanden te kiezen<br><small>mp3, m4a, ogg, opus, flac · max <%= maxBytesMb %> MB · wav max <%= maxWavMb %> MB</small></span> 49 49 <input type="file" id="audio-files" accept="audio/*" multiple> 50 50 </label>
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)