A Node.js media management utility & media handling.
Supports single & multiple file uploads, any file type, image resizing & conversion, and controller-level usage (no middleware needed).
get usage in example folder
---
📦 Installation
```bash
npm install uplix
# Usage direct in controller
const { MediaManager } = require('uplix');
const media = new MediaManager(
'uploads',
'/uploads',
{ maxFileSizeMB: 10 },
{ convertToWebP: true } # false for original extension
);
# Create new model
const model = await Model.create({
name: payload.name,
image: imageFileName,
is_active: payload.is_active ?? false, # boolean parsed by auto()
});
# Update fields and files
const model = await Model.find(req.params.id);
# Auto-parse fields and files
const data = await media.auto(req);
# Fill other fields
model.fill({
name: data.name,
is_active: model.is_active ?? false, # already boolean from auto()
});
# Handle image upload
if (data.image) {
# Normalize: payload.image may be an array if multiple files uploaded
const fileData = Array.isArray(data.image) ? data.image[0] : data.image;
# Remove old file if it exists
if (model.image) {
await media.remove(model.image, 'image');
}
# Update with new file
model.image = fileData.fileName;
}
await model.save();
# Delet files
if (model.image) {
await media.remove(model.image, 'image');
}