привет. Я хочу проверить входной файл html type image, просто примите 'png', 'jpg', 'jpeg', 'gif
' и не превышайте 2 МБ, пока я не смогу сделать возможным только то, что он не займет у меня this.firstFormGroup.controls.image .status
, если вы введете любой другой файл активирован как действительный статус.
handleFileInput(event) {
const file = event.target.files[0];
const typeFile = file.type.split('/');
const filemb: number = file.size / 1000000;
if (filemb <= 2 && (typeFile[1] === 'png' || typeFile[1] === 'jpg' || typeFile[1] === 'jpeg' || typeFile[1] === 'gif') ) {
const filePath = `${this.rutaImg}/${file.name}`;
const fileRef = this.storage.ref(filePath);
const task = this.storage.upload(filePath, file);
this.uploadPercent = task.percentageChanges();
task.snapshotChanges().pipe(
finalize(() => {
this.downloadURL = fileRef.getDownloadURL();
this.downloadURL.subscribe( url => {
if ( url ) {
this.urlImg = url;
console.log(this.urlImg);
this.validateImage = true;
console.log(this.validateImage );
return {
isError: this.validateImage
};
}
});
})
)
.subscribe();
} else {
this.validateImage = false;
}
}
HTML-код
<div>
<input formControlName="image" (change)="handleFileInput($event)" type="file" id="file" class="inputfile" accept="image/*" required/>
<label for="file"><mdb-icon icon="camera"></mdb-icon> Insertar Imagen
<progress style="margin-top: -10px; " *ngIf="uploadPercent" max="100" [value]="(uploadPercent | async)"></progress>
</label>
</div>
FormGroup
this.firstFormGroup = this.fb.group({
ruc: ['', rucValidator],
razon_social: ['', nameValidator],
nameBussines: ['', nameValidator],
phone: ['', phoneValidator],
describe: ['', describeValidator],
plan: ['', Validators.required],
category: ['', Validators.required],
image: ['', this.validateImage]
});