fix(additional-file-uploader): add file size validation with UI feedback (#2516)

This commit is contained in:
ACX
2026-01-27 11:09:24 -07:00
committed by GitHub
parent 2efe452441
commit 74ac2d25d1
2 changed files with 39 additions and 6 deletions

View File

@@ -43,7 +43,6 @@
<!-- File Upload -->
<p-fileupload class="file-upload" name="file"
[maxFileSize]="maxFileSizeBytes"
[customUpload]="true"
[multiple]="false"
(onSelect)="onFilesSelect($event)"
@@ -81,7 +80,7 @@
@for (uploadFile of this.files; track uploadFile; let i = $index) {
<div class="file-row">
<div class="file-info">
<p-badge [value]="uploadFile.status" [severity]="getBadgeSeverity(uploadFile.status)" class="file-badge"/>
<p-badge [value]="getFileStatusLabel(uploadFile)" [severity]="getBadgeSeverity(uploadFile.status)" class="file-badge"/>
<span class="file-name">
{{ uploadFile.file.name }}
</span>

View File

@@ -104,10 +104,26 @@ export class AdditionalFileUploaderComponent implements OnInit, OnDestroy {
// Only take the first file for single file upload
if (newFiles.length > 0) {
const file = newFiles[0];
this.files = [{
file,
status: 'Pending'
}];
if (this.maxFileSizeBytes && file.size > this.maxFileSizeBytes) {
const errorMsg = `File exceeds maximum size of ${this.formatSize(this.maxFileSizeBytes)}`;
this.files = [{
file,
status: 'Failed',
errorMessage: errorMsg
}];
this.messageService.add({
severity: 'error',
summary: 'File Too Large',
detail: `${file.name} exceeds the maximum file size of ${this.formatSize(this.maxFileSizeBytes)}`,
life: 5000
});
} else {
this.files = [{
file,
status: 'Pending'
}];
}
}
}
@@ -186,6 +202,24 @@ export class AdditionalFileUploaderComponent implements OnInit, OnDestroy {
}
}
getFileStatusLabel(uploadFile: UploadingFile): string {
if (uploadFile.status === 'Failed' && uploadFile.errorMessage?.includes('exceeds maximum size')) {
return 'Too Large';
}
switch (uploadFile.status) {
case 'Pending':
return 'Ready';
case 'Uploading':
return 'Uploading';
case 'Uploaded':
return 'Uploaded';
case 'Failed':
return 'Failed';
default:
return uploadFile.status;
}
}
closeDialog(): void {
this.dialogRef.close();
}