26 lines
645 B
TypeScript
26 lines
645 B
TypeScript
import path from "path";
|
|
import fs from "fs";
|
|
|
|
const UPLOAD_DIR = process.env.UPLOAD_DIR || path.join(process.cwd(), "public", "uploads");
|
|
|
|
export function getUploadDir(subdir = "") {
|
|
const dir = path.join(UPLOAD_DIR, subdir);
|
|
if (!fs.existsSync(dir)) {
|
|
fs.mkdirSync(dir, { recursive: true });
|
|
}
|
|
return dir;
|
|
}
|
|
|
|
export function getPublicUrl(filename: string, subdir = "") {
|
|
const base = subdir ? `/${subdir}` : "";
|
|
return `${base}/${filename}`;
|
|
}
|
|
|
|
export function sanitizeFilename(name: string) {
|
|
return name
|
|
.normalize("NFD")
|
|
.replace(/[\u0300-\u036f]/g, "")
|
|
.replace(/[^a-zA-Z0-9._-]/g, "_")
|
|
.toLowerCase();
|
|
}
|