Loading...
Loading...
Implement Syncfusion Angular Uploader for single/multiple file uploads, async/chunk uploads, drag-and-drop, validation, templates, and form integration. Use this when building file upload UIs, handling server-side operations, progress tracking, or customizing file lists in Angular apps. Covers APIs, events, styling, accessibility, and localization.
npx skill4agent add syncfusion/angular-ui-components-skills syncfusion-angular-uploaderejs-uploader@syncfusion/ej2-angular-inputs<ejs-uploader>multiplepostRawFileautoUploadsequentialUploadfilesasyncSettings.chunkSizeretryCountretryAfterDelaychunkSuccesschunkFailureallowedExtensionsminFileSizemaxFileSizeselecteddirectoryUpload.e-upload-drag-hovertemplateshowFileListbuttonsngModelFormGrouprequiredupload()customFormDataimport { Component } from '@angular/core';
import { UploaderModule } from '@syncfusion/ej2-angular-inputs';
@Component({
imports: [UploaderModule],
standalone: true,
selector: 'app-root',
template: `
<ejs-uploader
[asyncSettings]="asyncSettings"
[autoUpload]="false"
(success)="onSuccess($event)"
(failure)="onFailure($event)">
</ejs-uploader>
`
})
export class AppComponent {
public asyncSettings = {
saveUrl: 'https://your-api/upload/save',
removeUrl: 'https://your-api/upload/remove'
};
onSuccess(args: any): void {
console.log('Upload operation:', args.operation, 'File:', args.file.name);
}
onFailure(args: any): void {
console.error('Upload failed:', args.file.name);
}
}styles.css@import 'node_modules/@syncfusion/ej2-base/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-buttons/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-inputs/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-popups/styles/material3.css';
@import 'node_modules/@syncfusion/ej2-angular-inputs/styles/material3.css';// Automatically uploads dropped or browsed files
<ejs-uploader
[asyncSettings]="asyncSettings"
[dropArea]="dropElement"
[multiple]="true"
(success)="onSuccess($event)">
</ejs-uploader><ejs-uploader
[asyncSettings]="chunkSettings"
(chunkSuccess)="onChunkSuccess($event)"
(chunkFailure)="onChunkFailure($event)">
</ejs-uploader>
// In component:
chunkSettings = {
saveUrl: 'https://your-api/upload/save',
removeUrl: 'https://your-api/upload/remove',
chunkSize: 500000 // 500 KB chunks
};<ejs-uploader
[asyncSettings]="asyncSettings"
allowedExtensions=".jpg,.png,.pdf"
[minFileSize]="1024"
[maxFileSize]="5000000">
</ejs-uploader><ejs-uploader
[asyncSettings]="asyncSettings"
[files]="preloadedFiles">
</ejs-uploader>
// In component:
preloadedFiles = [
{ name: 'report', size: 200000, type: '.pdf' },
{ name: 'photo', size: 500000, type: '.jpg' }
];<ejs-uploader
[asyncSettings]="asyncSettings"
(uploading)="addAuthHeader($event)"
(removing)="addAuthHeader($event)">
</ejs-uploader>
addAuthHeader(args: any): void {
args.currentRequest.setRequestHeader('Authorization', `Bearer ${this.token}`);
}| Property | Type | Default | Purpose |
|---|---|---|---|
| AsyncSettingsModel | | Server save/remove URLs and chunk config |
| boolean | | Upload immediately on file selection |
| boolean | | Allow selecting multiple files |
| string | | Comma-separated allowed extensions (e.g., |
| number | | Minimum file size in bytes |
| number | | Maximum file size in bytes (~28.6 MB) |
| FilesPropModel[] | | Preloaded files from server |
| string | HTMLElement | | Custom drop target element or selector |
| boolean | | Enable folder/directory upload |
| boolean | | Upload files one at a time |
| boolean | | Show/hide default file list |
| any | | Custom file list item template |
| ButtonsPropsModel | | Customize button text/HTML |
| boolean | | Enable or disable the component |
| string | | Additional CSS classes on root element |
| boolean | | Right-to-left rendering |
| boolean | | Prevent XSS in filenames |
| DropEffect | | Drag effect: Copy, Move, Link, None |
| Event | When it Fires | Key Args |
|---|---|---|
| Files selected or dropped | |
| Before each file upload starts | |
| Upload or remove succeeds | |
| Upload or remove fails | |
| Upload progress | |
| Before file remove request | |
| Before remove confirmation | |
| Before upload process | |
| File list changes | |
| Before clear all action | |
| Each chunk uploads OK | |
| Each chunk fails | |
| Before each chunk upload | |
| Chunk upload paused | |
| Chunk upload resumed | |
| Upload canceled | |
| Before each file item renders | |
| All files processed | |
| Component initialized | — |
| Method | Purpose |
|---|---|
| Programmatically start upload for selected or specific files |
| Remove a file from list or server |
| Cancel an in-progress chunk upload |
| Pause a chunk upload |
| Resume a paused chunk upload |
| Retry a failed or canceled upload |
| Clear all files from the list |
| Get file data array shown in the list |
| Programmatically create file list items |
| Sort file list alphabetically |
| Convert bytes to human-readable KB/MB string |
| Destroy the component and detach events |
multiple="false"allowedExtensions=".jpg,.png,.gif,.webp"maxFileSize=5000000selectedallowedExtensions=".pdf,.doc,.docx,.xlsx"selecteduploadingcustomFormDataautoUpload=falsedata-required-message