Correct Build and file name sanitization

This commit is contained in:
Allan Carr
2024-08-28 09:34:56 -07:00
parent 36ada6fd1f
commit a6da3c369a
4 changed files with 42 additions and 26 deletions

View File

@@ -8,7 +8,11 @@ export function generateUniqueBillFilename(file: Express.Multer.File, invoice_nu
return `${sanitizeFileName(invoice_number)}-${Math.floor(Date.now() / 1000)}${path.extname(file.originalname)}`;
}
export function generateUniqueHeicFilename(file: Express.Multer.File) {
return `${path.parse(sanitizeFileName(path.basename(file.originalname))).name}-${Math.floor(Date.now() / 1000)}.jpeg`;
}
function sanitizeFileName(fileName: string): string {
const restrictedChars = /[<>:"/\\|?*\x00-\x1F]/g;
const restrictedChars = /[<>:"/\\|?*#\x00-\x1F]/g;
return fileName.replace(restrictedChars, "");
}

View File

@@ -5,6 +5,7 @@ import fs from "fs-extra";
import gm from "gm";
import path from "path";
import { logger } from "../server.js";
import { generateUniqueHeicFilename } from "./generateUniqueFilename.js";
import { FolderPaths } from "./serverInit.js";
dotenv.config({
@@ -15,19 +16,21 @@ const imageMagick = gm.subClass({ imageMagick: true });
export async function ConvertHeicFiles(files: Express.Multer.File[]) {
const validFiles = await filterValidHeicFiles(files);
await Promise.all(validFiles.map(async (file) => {
const convertedFileName = `${path.parse(path.basename(file.originalname)).name}-${Math.floor(Date.now() / 1000)}.jpeg`;
try {
await ConvertToJpeg(file.path, `${file.destination}/${convertedFileName}`);
logger.log("debug", `Converted ${file.filename} image to JPEG from HEIC.`);
await handleOriginalFile(file, convertedFileName);
file.filename = convertedFileName;
file.mimetype = "image/jpeg";
file.path = `${file.destination}/${convertedFileName}`;
} catch (error) {
logger.log("error", `Error converting ${file.filename} image to JPEG from HEIC. ${JSON.stringify(error)}`);
}
}));
await Promise.all(
validFiles.map(async (file) => {
const convertedFileName = generateUniqueHeicFilename(file);
try {
await ConvertToJpeg(file.path, `${file.destination}/${convertedFileName}`);
logger.log("debug", `Converted ${file.filename} image to JPEG from HEIC.`);
await handleOriginalFile(file, convertedFileName);
file.filename = convertedFileName;
file.mimetype = "image/jpeg";
file.path = `${file.destination}/${convertedFileName}`;
} catch (error) {
logger.log("error", `Error converting ${file.filename} image to JPEG from HEIC. ${JSON.stringify(error)}`);
}
})
);
}
async function filterValidHeicFiles(files: Express.Multer.File[]) {