Correct Build and file name sanitization
This commit is contained in:
@@ -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, "");
|
||||
}
|
||||
|
||||
@@ -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[]) {
|
||||
|
||||
Reference in New Issue
Block a user