delta-file-multer
Version:
A simple plug-n-play file upload middleware using Multer and MongoDB
124 lines (87 loc) β’ 2.94 kB
Markdown
# π¦ delta-file-multer
A plug-and-play file upload handler built on top of **Multer** and **Mongoose**.
Save images/files to disk and store their filenames in MongoDB β all in a single line of configuration!
## π Installation
Install via NPM:
```bash
npm install delta-file-multer
```
## πΉ Usage
### 1οΈβ£ Import and Use in Your Server File
```js
import express from "express";
import mongoose from "mongoose";
import deltaMulter from "delta-file-multer";
import { connectDB } from "./db.js";
const app = express();
connectDB(); // your own DB connection logic
// File upload setup
deltaMulter({
app,
mongoose,
dbField: "profilePic", // Field name (used in schema)
collectionName: "user", // MongoDB collection name
uploadPath: "./uploads", // Local upload folder
route: "/api/uploadProfile", // API endpoint
});
app.listen(4000, () => {
console.log("Server running on http://localhost:4000");
});
```
## π§ͺ How to Test via Postman
1. Open Postman
2. Set method to `POST`
3. Endpoint: `http://localhost:4000/api/uploadProfile`
4. Go to `Body > form-data`
5. Add a field with:
- **Key**: `file`
- **Type**: File
- **Value**: Upload any image
## π¦ Output Example in Postman
```json
{
"success": true,
"message": "File uploaded successfully",
"file": "1743961538129_Screenshot 2025-03-18 122733.png"
}
```
## π¦ Output Example in MongoDB
A sample document saved in MongoDB:
```json
{
"_id": "123abc...",
"profilePic": "1680458392357_image.png",
"__v": 0
}
```
## π Features
β
Plug-and-play file upload logic
β
Auto-creates Mongoose model if not defined
β
Auto-saves uploaded file metadata to MongoDB
β
Supports custom routes, upload folders, and field names
β
Works with any Express + Mongoose project
## βοΈ Options
| Property | Type | Required | Description |
| ---------------- | ------ | -------- | ----------------------------------------------- |
| `app` | Object | β
| Your Express app instance |
| `mongoose` | Object | β
| Your connected Mongoose instance |
| `dbField` | String | β
| Field name for storing file name in DB |
| `collectionName` | String | β
| MongoDB collection where file metadata is saved |
| `uploadPath` | String | β
| Path to store uploaded files locally |
| `route` | String | β
| API route for file upload |
## π License
This project is licensed under the **MIT License**.
## π» Contributing
Pull requests, issues, and feedback are always welcome.
Letβs make file uploads easier, together!
Happy uploading! π