2016-09-30 2 views
-1

В Angular 2 как проверить, действительно ли файл является образом?Angular 2 - Проверить, действительно ли файл - это изображение

isImage(file: File): boolean { 
    return /^image\//.test(file.type); 
} 

В приведенной выше функции после загрузки, просто измените расширение .txt на .png файл возвращает true например: text.txt в text.png

ответ

1

Ниже конкретно не о Угловое, но это не отвечает на вопрос о том, делать проверка типа файла на стороне клиента в javascript. Вам должно быть достаточно легко адаптировать решение для ваших нужд: How to check file MIME type with javascript before upload?

0

Вот специальная директива для этого. Вы можете использовать его и для других типов файлов. Просто добавить/удалить ваши необходимые расширения в RegExp

import { FormControl, NG_VALIDATORS, Validator } from '@angular/forms'; 
import { Directive } from '@angular/core'; 

@Directive({ 
    selector: '[FileTypeValidator]', 
    providers: [ 
    { 
     provide: NG_VALIDATORS, useExisting: FileTypeValidator, multi: true 
    } 
    ] 
}) 
export class FileTypeValidator implements Validator { 

    static validate(c: FormControl): { [key: string]: any } { 
    if (c.value) { 
     if (c.value[0]) { 
     return FileTypeValidator.checkExtension(c); 
     }; 
    } 
    } 

    private static checkExtension(c: FormControl) { 
    let valToLower = c.value[0].name.toLowerCase(); 
    let regex = new RegExp("(.*?)\.(jpg|png|jpeg)$"); //add or remove required extensions here 
    let regexTest = regex.test(valToLower); 
    return !regexTest ? { "notSupportedFileType": true } : null; 
    } 

    validate(c: FormControl): { [key: string]: any } { 
    return FileTypeValidator.validate(c); 
    } 

} 

В компоненте,

this.form = new FormGroup({ 
     file: new FormControl("", [FileTypeValidator.validate]) 
    }); 
Смежные вопросы