fix : uploader
This commit is contained in:
@@ -64,9 +64,12 @@ export class UploaderService {
|
|||||||
|
|
||||||
const s3Key = this.s3Service.generateFileKey(file.originalname, fileType);
|
const s3Key = this.s3Service.generateFileKey(file.originalname, fileType);
|
||||||
|
|
||||||
|
// Sanitize filename for HTTP headers (S3 metadata)
|
||||||
|
const sanitizedOriginalName = this.sanitizeFilenameForHeader(file.originalname);
|
||||||
|
|
||||||
// Upload to S3
|
// Upload to S3
|
||||||
const s3Result = await this.s3Service.uploadFile(file.buffer, s3Key, file.mimetype, {
|
const s3Result = await this.s3Service.uploadFile(file.buffer, s3Key, file.mimetype, {
|
||||||
originalName: file.originalname,
|
originalName: sanitizedOriginalName,
|
||||||
uploadedBy: "admin",
|
uploadedBy: "admin",
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -108,4 +111,21 @@ export class UploaderService {
|
|||||||
}
|
}
|
||||||
return "unknown";
|
return "unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sanitize filename for use in HTTP headers
|
||||||
|
* Removes invalid characters that are not allowed in HTTP header values
|
||||||
|
* HTTP headers only allow ASCII printable characters (0x20-0x7E) excluding certain special chars
|
||||||
|
*/
|
||||||
|
private sanitizeFilenameForHeader(filename: string): string {
|
||||||
|
if (!filename) return "";
|
||||||
|
|
||||||
|
// Remove control characters (0x00-0x1F, 0x7F) and newlines/tabs
|
||||||
|
// Replace non-ASCII characters with underscore to keep the filename readable
|
||||||
|
// This ensures the header value is valid while preserving as much of the original name as possible
|
||||||
|
return filename
|
||||||
|
.replace(/[\x00-\x1F\x7F\r\n\t]/g, "") // Remove control characters, newlines, tabs
|
||||||
|
.replace(/[^\x20-\x7E]/g, "_") // Replace non-ASCII characters with underscore
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user