UNPKG

ng2-file-size

Version:
119 lines (89 loc) 3.96 kB
# ng2-file-size [![npm version](https://badge.fury.io/js/ng2-file-size.svg)](http://badge.fury.io/js/ng2-file-size) [![npm downloads](https://img.shields.io/npm/dm/ng2-file-size.svg)](https://npmjs.org/ng2-file-size) [![Build Status](https://travis-ci.org/pkantsedalov/ng2-file-size.svg?branch=master)](https://travis-ci.org/pkantsedalov/ng2-file-size) <!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [Description](#description) - [Installation](#installation) - [Usage](#usage) - [Demo](#demo) - [Acknowledgments](#acknowledgments) - [Development](#development) <!-- END doctoc generated TOC please keep comment here to allow auto update --> ## Description Angular 2 validation directive for checking `<input type="file" />` value to be of the valid size. Works both with one & multiple files mode. ## Installation `npm install ng2-file-size --save` `npm i ng2-file-size -S` (shortcut) ## Usage **Attention**: in [beta version]() use `[ng2FileSizeErrorMsg]` param instead of `[fileSizeErrorMsg]` one. 1. import the module to your one: ```typescript import { NgModule } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { Ng2FileSizeModule } from 'ng2-file-size'; @NgModule({ imports: [ // other core modules FormsModule, // required because of NgModel dependency Ng2FileSizeModule, // other app modules ] }) class MyModule {} ``` 2. then use the directive: ```html <!-- 1. Make it's size restricted by min value (in bytes). 2. The error message is a default one: 'File size is invalid' --> <input type="file" [ng2FileSize]="{ min: 1024 }" [(ngModel)]="myFile" /> <!-- 1. Make it's size restricted by max value (in bytes). 2. The error message is a default one: 'File size is invalid' --> <input type="file" [ng2FileSize]="{ max: 1024 }" [(ngModel)]="myFile" /> <!-- 1. Make it's size restricted by min & max values (in bytes). 2. The error message is customized to 'File size must be less that 1mb and more that 1kb!' --> <input type="file" [ng2FileSize]="{ min: 1024, max: 1024 * 1024 }" [fileSizeErrorMsg]="'File size must be less that 1mb and more that 1kb!'" [(ngModel)]="myFile" /> <!-- 1. Make it's size restricted by dynamic values (in bytes). 2. The error message is customized dynamically --> <input type="file" [ng2FileSize]="fileSizeRestrictions" [fileSizeErrorMsg]="customErrorMessage" [(ngModel)]="myFile" /> ``` ## Demo See it [here](https://pkantsedalov.github.io/ng2-file-size). ## Acknowledgments I express my gratitude to the [valor-software](https://github.com/valor-software) team. This project structure is based on their [ng2-file-upload](https://github.com/valor-software/ng2-file-upload) solution, their [tslint configuration](https://github.com/valor-software/tslint-config-valorsoft) and [npm submodules manager](https://www.npmjs.com/package/ngm-cli). ## Development 1. Clone/fork it 2. In `./src` directory you can find the directive sources & unit tests, in the `./demo` one - the files for Github Pages demo. 3. Use next npm scripts for development (they use [angular-cli](https://github.com/angular/angular-cli) and [ngm-cli](https://www.npmjs.com/package/ngm-cli)): 3.1. `npm start` serves with `ng serve` command; 3.2. `npm build` - created `./dist` directory in the end; 3.3 `npm test` - runs unit tests with `ng test` using Karma and Angular 2 testing tools. 3.4 `npm run e2e` - runs e2e tests using Protractor and Selenium Webdriver.