21 lines
625 B
JavaScript
21 lines
625 B
JavaScript
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import crypto from "node:crypto";
|
|
import multer from "multer";
|
|
import { config } from "../config.js";
|
|
|
|
fs.mkdirSync(config.uploadDirectory, { recursive: true });
|
|
|
|
const storage = multer.diskStorage({
|
|
destination: config.uploadDirectory,
|
|
filename: (request, file, callback) => {
|
|
const extension = path.extname(file.originalname).slice(0, 20);
|
|
callback(null, `${Date.now()}-${crypto.randomUUID()}${extension}`);
|
|
},
|
|
});
|
|
|
|
export const uploadSingle = multer({
|
|
storage,
|
|
limits: { fileSize: config.MAX_UPLOAD_MB * 1024 * 1024, files: 1 },
|
|
}).single("file");
|