Angular Bootstrap File Upload

Angular File Upload - Bootstrap 4 & Material Design

Note: This documentation is for an older version of Bootstrap (v.4). A newer version is available for Bootstrap 5. We recommend migrating to the latest version of our product - Material Design for Bootstrap 5.
Go to docs v.5

The Angular Bootstrap File Upload plugin is an extension that allows you to upload files by using drag and drop functionality. Easy to use, setup and customize.


Basic example

        
            
              <mdb-file-upload (fileRemoved)="onFileRemove()" (fileAdded)="onFileAdd($event)"></mdb-file-upload>
            
        
    
        
            
              import { Component } from '@angular/core';

              @Component({
              selector: 'file-upload',
              templateUrl: './file-upload.component.html',
              })
              export class FileUpload {
                file: File;

                onFileAdd(file: File) {
                  this.file = file;
                }

                onFileRemove() {
                  this.file = null;
                }
              }
            
        
    

Default value

You can add a custom url to the [defaultFile] input to set a default preview image.

        
            
            <mdb-file-upload
              #uploader
              (fileRemoved)="onFileRemove()"
              (fileAdded)="onFileAdd($event)"
              [defaultFile]="'https://mdbootstrap.com/img/Photos/Others/images/89.webp'"
            >
            </mdb-file-upload>
          
        
    
        
            
            import { Component } from '@angular/core';

            @Component({
              selector: 'file-upload',
              templateUrl: './file-upload.component.html',
            })
            export class FileUpload {
              file: File;

              onFileAdd(file: File) {
                this.file = file;
              }

              onFileRemove() {
                this.file = null;
              }
            }
          
        
    

Custom height

You can use the [height] input to set a custom height.

        
            
            <mdb-file-upload [height]="500" (fileRemoved)="onFileRemove()" (fileAdded)="onFileAdd($event)"></mdb-file-upload>
          
        
    
        
            
            import { Component } from '@angular/core';

            @Component({
              selector: 'file-upload',
              templateUrl: './file-upload.component.html',
            })
            export class FileUpload {
              file: File;

              onFileAdd(file: File) {
                this.file = file;
              }

              onFileRemove() {
                this.file = null;
              }
            }
          
        
    

Disable

You can use the [disabled] input to toggle the disabled state.

        
            
            <mdb-file-upload [disabled]="true" (fileRemoved)="onFileRemove()" (fileAdded)="onFileAdd($event)"></mdb-file-upload>
          
        
    
        
            
            import { Component } from '@angular/core';

            @Component({
              selector: 'file-upload',
              templateUrl: './file-upload.component.html',
            })
            export class FileUpload {
              file: File;

              onFileAdd(file: File) {
                this.file = file;
              }

              onFileRemove() {
                this.file = null;
              }
            }
          
        
    

Upload files

The file you added to the input is returned in (fileAdded) output. You can listen to this event and upload the file to the server

Please note that in order to use the Angular HttpClient you need to import HttpClientModule in your module file.

        
            
            <mdb-file-upload [disabled]="true" (fileRemoved)="onFileRemove()" (fileAdded)="onFileAdd($event)"></mdb-file-upload>
          
        
    
        
            
            import { Component } from '@angular/core';
            import { HttpClient } from '@angular/common/http';

            @Component({
              selector: 'file-upload',
              templateUrl: './file-upload.component.html',
            })
            export class FileUpload {
              file: File;

              constructor(private http: HttpClient) {}
              onFileAdd(file: File) {
                this.file = file;
              }

              onFileRemove() {
                this.file = null;
              }

              uploadFiles() {
                const url = 'your-path-to-backend-endpoint'
                const data = new FormData();
                data.append('file', this.file, this.file.name)
                this.http.post(url, data);
              }
            }
          
        
    

Max size

You can limit the size of an uploaded file

        
            
            <mdb-file-upload [disabled]="true" (fileRemoved)="onFileRemove()" (fileAdded)="onFileAdd($event)"></mdb-file-upload>
          
        
    
        
            
            import { Component } from '@angular/core';
            import { HttpClient } from '@angular/common/http';

            @Component({
            selector: 'file-upload',
            templateUrl: './file-upload.component.html',
            })
            export class FileUpload {
              file: File;
              maxFileSize = 1000 // bytes

              constructor(private http: HttpClient) {}

              onFileAdd(file: File) {
                this.file = file;
              }

              onFileRemove() {
                this.file = null;
              }

              uploadFiles() {
                const url = 'your-path-to-backend-endpoint'
                const data = new FormData();
                data.append('file', this.file, this.file.name)
                if (this.file.size <= this.maxFileSize) {
                this.http.post(url, data);
                }
              }
            }
          
        
    

Installation guide

Step 1: Create a new Angular application using Angular CLI command:

ng new application-name --style=scss --routing=false

Step 2: Download this plugin from your user dashboard

Step 3: Extract the downloaded archive from Step 2 and copy the mdb-file-upload-{version-number}.tgz file to your application root directory

Step 4: Install the mdb-file-upload-{version-number}.tgz package in your application by executing the command below in the application's terminal:

npm install mdb-file-upload-{version-number.tgz} --save

For example, the installation command should look like the following: npm install mdb-file-upload-8.0.0.tgz --save

Step 5: Follow the Quickstart Guide to add MDB Angular Free or MDB Angular Pro (depending on which version you're using) to the application

Step 6: Import the MdbFileUploadModule in the app.module.ts file

Step 7: Copy the basic example from this site and enjoy your new plugin!

Step 1: Download this plugin from your user dashboard

Step 2: Extract the downloaded archive from Step 1 and copy the mdb-file-upload-{version-number}.tgz file to your application root directory

Step 3: Install the mdb-file-upload-{version-number}.tgz package in your application by executing the below command in the application's terminal:

npm install mdb-file-upload-{version-number.tgz} --save

For example, the installation command should look like the following: npm install mdb-file-upload-8.0.0.tgz --save

Step 4: Follow the Quickstart Guide to add MDB Angular Free or MDB Angular Pro (depending on which version you're using) to the application

Step 5: Import the MdbFileUploadModule into the app.module.ts file

Step 6: Copy the basic example from this site and enjoy your new plugin!

Angular Drag And Drop File Upload - API

In this section you will find information about the required modules and available inputs, outputs, methods and events of drag and drop file upload plugin.


Download

This plugin requires a purchase.

Buy Drag and drop file upload plugin

Components

MdbFileUpload

Selector: mdb-file-upload

Type: MdbFileUploadComponent


Inputs

Name Type Default Description Example
defaultFile string - Allows one to set url to a file that will be used for default preview [defaultFile]="'https://mdbootstrap.com/img/Photos/Others/images/89.webp'"
disabled boolean false Allows one to toggle the disabled state [disabled]="true"
height number 200 Allows one to set custom height [height]="500"
customText ITextTranslation {fileText: 'Drag and drop a file here or click', removeText: 'Remove', imageFileText: 'Drag and drop or click to replace'} Allows one to set some custom text inside a file upload component [customText]="customTextTranslation"

Outputs

Name Type Description Example
fileAdded EventEmitter<File> Event fired when a new file is added (fileAdded)="onFileAdd($event)"
fileRemoved EventEmitter<any> Event fired when a file is removed (fileRemoved)="onFileRemove()"

Methods

You can get access to file upload methods from another component. Add template reference variable to your mdb-file-upload component in HTML file

<mdb-file-upload #uploader></mdb-file-upload>

Then in your typescript file use the @ViewChild decorator to get access to MdbFileUploadComponent methods

@ViewChild('uploader', { static: true }) uploader: MdbFileUploadComponent

Name Description Example
reset Removes file from input this.uploader.reset()