Backend:
- ASP.NET MVC – Link: Multiple file upload in ASP.NET MVC
- PHP – Link: PHP Upload file
Link demo: http://angular.tuanitpro.com/#/uploader
- Username: tuanitpro
- Password: 123456
uploader.component.css
input[type='file']{
display: none;
}
#uploader{
width:100%; color:#fff;
font-family:Verdana, Geneva, Tahoma, sans-serif;
background:#0094ff;
text-align:center;
padding:50px;
cursor:pointer;
}
uploader.component.html
<div class="container body">
<div class="main_container">
<div class="right_col" role="main">
<div class="">
<div class="clearfix"></div>
<div class="row">
<div class="col-md-12">
<h2>Angular 4 - Upload file</h2>
</div>
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel" style="height: auto;">
<div class="x_content">
<input type="file" id="fileUploadInput" accept="images/*" (change)="fileChange($event)" />
<div id="uploader" (click)="doUploadFile()">
<i class="fa fa-picture-o"></i> {{uploadResult.uploadingText}}
</div>
<div class="progress progress-striped" *ngIf="uploadResult.progress > 0">
<div class="progress-bar progress-bar-success" [ngStyle]="{'width': uploadResult.progress+'%'}">{{uploadResult.progress}}%</div>
</div>
<img *ngIf="uploadResult.fileUrl" src="{{uploadResult.fileUrl}}" style="width:100%;" class="img-response">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
uploader.component.ts
import { Component, OnInit } from '@angular/core';
import { Title } from '@angular/platform-browser';
import { Http } from '@angular/http';
import $ from 'jquery/dist/jquery.min';
@Component({
selector: 'app-uploader',
templateUrl: './uploader.component.html',
styleUrls: ['./uploader.component.css']
})
export class UploaderComponent implements OnInit {
uploadingText = 'Chọn file (chỉ chấp nhận file ảnh)';
uploadResult: any = {
progress: 0,
uploadingText: this.uploadingText,
fileUrl: null
}
constructor(private title: Title) { }
ngOnInit() {
this.title.setTitle("Angular 4 - Upload file");
}
doUploadFile() {
this.uploadResult.progress = 0;
this.uploadResult.fileUrl = null;
this.uploadResult.uploadingText = this.uploadingText;
$("#fileUploadInput").trigger("click");
}
fileChange(event) {
let fileList: FileList = event.target.files;
if (fileList.length > 0) {
let file: File = fileList[0];
let formData: FormData = new FormData();
formData.append('uploadFile', file);
let xhr: XMLHttpRequest = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
let json = JSON.parse(xhr.response);
let fileUrl = 'http://minhquandalat.com/uploads/' + json.Name;
this.uploadResult.progress = 100;
this.uploadResult.fileUrl = fileUrl;
this.uploadResult.uploadingText = "Hoàn thành";
} else {
console.log(xhr.response);
}
}
};
xhr.upload.onprogress = (event) => {
this.uploadResult.uploadingText = "Đang tải ảnh lên...";
let percentVal = Math.round(event.loaded / event.total * 100);
this.uploadResult.progress = percentVal;
};
xhr.open('POST', "http://minhquandalat.com/api/FileUpload", true);
xhr.send(formData);
}
}
}
Happy coding
