By using uploading event, you can get the file size before upload it to server.
File object contains the file size in bytes only.
You can convert the size to standard formats (KB
or MB
) using bytesToSize method.
import { Component, ViewChild } from '@angular/core';
import { EmitType } from '@syncfusion/ej2-base';
import { UploaderComponent } from '@syncfusion/ej2-angular-inputs';
@Component({
selector: 'app-root',
templateUrl: 'default.html',
styleUrls: ['index.css']
})
export class AppComponent {
@ViewChild('defaultupload')
public uploadObj: UploaderComponent;
public autoUpload: boolean = false;
public path: Object = {
saveUrl: 'https://ej2.syncfusion.com/services/api/uploadbox/Save',
removeUrl: 'https://ej2.syncfusion.com/services/api/uploadbox/Remove'
};
public onBeforeUpload: EmitType<Object> = (args: any) => {
// get the file size in bytes
let sizeInBytes: number = args.fileData.size;
// get the file size in standard format
alert("File size is: " + this.uploadObj.bytesToSize(sizeInBytes));
}
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { UploaderModule } from '@syncfusion/ej2-angular-inputs';
/**
* Module
*/
@NgModule({
imports: [
BrowserModule, UploaderModule
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {
}
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { AppModule } from './app.module';
enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
<div class="control-section">
<div class="control_wrapper">
<ejs-uploader #defaultupload id='fileupload' [asyncSettings]='path' [autoUpload]='autoUpload' (uploading)='onBeforeUpload($event)' ></ejs-uploader>
</div>
</div>
#container {
visibility: hidden;
margin: 0 auto;
width: 300px;
}
#loader {
color: #008cff;
font-family: 'Helvetica Neue','calibiri';
font-size: 14px;
height: 40px;
left: 45%;
position: absolute;
top: 45%;
width: 30%;
}