Add UTF-8 filename decoding for multipart uploads in EquipmentService

- Introduced a new utility function to decode filenames from multipart uploads that may be misencoded as ISO-8859-1.
- Updated EquipmentService to utilize this function when processing file attachments, ensuring correct original file names are stored and returned.
This commit is contained in:
Первов Артем
2026-04-21 01:15:37 +03:00
parent 7735988ed5
commit eb36c04a4b
2 changed files with 37 additions and 3 deletions

View File

@@ -8,6 +8,7 @@ import { EquipmentStatus, Prisma } from '@prisma/client';
import type { Equipment } from '@prisma/client';
import { Response } from 'express';
import type { Express } from 'express';
import { decodeUtf8FilenameFromMultipart } from '../../common/multipart-filename';
import { setListHeaders } from '../../common/http';
import { PrismaService } from '../../prisma/prisma.service';
import type { StoredAttachmentMeta } from '../../storage/storage.service';
@@ -133,10 +134,11 @@ export class EquipmentService {
await this.deleteStoredAttachmentIfAny(item);
const objectKey = this.storage.buildEquipmentObjectKey(id, file.originalname);
const decodedOriginalName = decodeUtf8FilenameFromMultipart(file.originalname);
const objectKey = this.storage.buildEquipmentObjectKey(id, decodedOriginalName);
const meta: StoredAttachmentMeta = {
objectKey,
originalFileName: file.originalname,
originalFileName: decodedOriginalName,
contentType: file.mimetype || 'application/octet-stream',
sizeBytes: file.size,
};
@@ -217,7 +219,7 @@ export class EquipmentService {
}
return {
objectKey: raw.objectKey,
originalFileName: raw.originalFileName,
originalFileName: decodeUtf8FilenameFromMultipart(raw.originalFileName),
contentType: raw.contentType,
sizeBytes: raw.sizeBytes,
downloadUrl,