Convert Figma logo to code with AI

valor-software logong2-file-upload

Easy to use Angular components for files upload

1,910
662
1,910
427

Top Related Projects

Component infrastructure and Material Design components for Angular

File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.

Lightweight Angular directive to upload files with optional FileAPI shim for cross browser support

28,920

The next open source file uploader for web browsers :dog:

Simple HTML5 drag-drop zone with React.js.

Multiple file upload plugin with image previews, drag and drop, progress bars. S3 and Azure support, image scaling, form support, chunking, resume, pause, and tons of other features.

Quick Overview

ng2-file-upload is an Angular module for file uploading. It provides a simple way to handle file uploads in Angular applications, offering both a basic and advanced API for customization and control over the upload process.

Pros

  • Easy integration with Angular projects
  • Supports multiple file uploads
  • Provides progress tracking and file type validation
  • Offers both simple and advanced APIs for different use cases

Cons

  • Limited to Angular framework
  • May require additional configuration for complex server-side implementations
  • Documentation could be more comprehensive
  • Some reported issues with TypeScript typings

Code Examples

Basic file upload:

import { FileUploadModule } from 'ng2-file-upload';

@NgModule({
  imports: [FileUploadModule]
})
export class AppModule { }

// In component
import { FileUploader } from 'ng2-file-upload';

const URL = 'http://your-url.com/upload';
uploader: FileUploader = new FileUploader({ url: URL });

Advanced usage with options:

uploader: FileUploader = new FileUploader({
  url: URL,
  itemAlias: 'file',
  allowedFileType: ['image'],
  maxFileSize: 1024 * 1024 // 1 MB
});

Handling upload events:

uploader.onSuccessItem = (item, response, status, headers) => {
  console.log('Upload successful');
};

uploader.onErrorItem = (item, response, status, headers) => {
  console.log('Upload failed');
};

Getting Started

  1. Install the package:

    npm install ng2-file-upload --save
    
  2. Import the module in your app.module.ts:

    import { FileUploadModule } from 'ng2-file-upload';
    
    @NgModule({
      imports: [FileUploadModule]
    })
    export class AppModule { }
    
  3. Use in your component:

    import { FileUploader } from 'ng2-file-upload';
    
    @Component({...})
    export class MyComponent {
      uploader: FileUploader = new FileUploader({url: 'http://your-url.com/upload'});
    }
    
  4. Add to your template:

    <input type="file" ng2FileSelect [uploader]="uploader" />
    <button (click)="uploader.uploadAll()">Upload</button>
    

Competitor Comparisons

Component infrastructure and Material Design components for Angular

Pros of Angular Components

  • Comprehensive set of UI components for Angular applications
  • Official Angular library with consistent updates and support
  • Follows Material Design principles for modern, attractive UI

Cons of Angular Components

  • Larger package size due to extensive component library
  • Steeper learning curve for developers new to Material Design
  • May require additional customization for non-Material Design projects

Code Comparison

ng2-file-upload:

<input type="file" ng2FileSelect [uploader]="uploader" />
<button (click)="uploader.uploadAll()">Upload</button>

Angular Components:

<input type="file" (change)="onFileSelected($event)">
<button mat-button (click)="uploadFile()">Upload</button>

Key Differences

  • ng2-file-upload is specifically designed for file uploads, while Angular Components provides a broader set of UI elements
  • ng2-file-upload offers more out-of-the-box functionality for file uploads, whereas Angular Components requires custom implementation
  • Angular Components integrates seamlessly with other Material Design elements, providing a cohesive look and feel

Use Cases

  • Choose ng2-file-upload for projects focused on file upload functionality
  • Opt for Angular Components when building a comprehensive UI with Material Design principles
  • Consider using both libraries together for a feature-rich application with enhanced file upload capabilities

File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images, audio and video for jQuery. Supports cross-domain, chunked and resumable file uploads. Works with any server-side platform (Google App Engine, PHP, Python, Ruby on Rails, Java, etc.) that supports standard HTML form file uploads.

Pros of jQuery-File-Upload

  • Broader browser compatibility, including older versions
  • More extensive features, including image resizing and gallery support
  • Larger community and longer development history

Cons of jQuery-File-Upload

  • Dependency on jQuery, which may not be ideal for modern frameworks
  • Potentially larger bundle size due to extensive feature set
  • Less integration-friendly with Angular-based applications

Code Comparison

ng2-file-upload:

import { FileUploadModule } from 'ng2-file-upload';

@NgModule({
  imports: [FileUploadModule]
})
export class AppModule { }

jQuery-File-Upload:

$('#fileupload').fileupload({
    url: '/upload',
    dataType: 'json',
    done: function (e, data) {
        $.each(data.result.files, function (index, file) {
            $('<p/>').text(file.name).appendTo(document.body);
        });
    }
});

The ng2-file-upload library is specifically designed for Angular applications, offering a more streamlined integration with Angular's component-based architecture. It provides a simpler API and is more lightweight, focusing on core file upload functionality.

jQuery-File-Upload, on the other hand, offers a more feature-rich solution with broader browser support. It's ideal for projects that already use jQuery or require advanced features like image manipulation. However, it may be less suitable for modern, framework-specific applications, especially those built with Angular.

Lightweight Angular directive to upload files with optional FileAPI shim for cross browser support

Pros of ng-file-upload

  • Supports AngularJS (1.x) applications, making it suitable for legacy projects
  • Offers more extensive features like resumable uploads and image resizing
  • Has a larger community and more established ecosystem

Cons of ng-file-upload

  • Not designed for modern Angular (2+) applications
  • Less actively maintained compared to ng2-file-upload
  • May require additional configuration for newer Angular versions

Code Comparison

ng-file-upload:

<div ng-file-drop ng-model="files" class="drop-box" 
  drag-over-class="dragover" ng-multiple="true" allow-dir="true"
  accept="image/*,application/pdf">Drop files here</div>

ng2-file-upload:

<input type="file" ng2FileSelect [uploader]="uploader" multiple />
<div ng2FileDrop [uploader]="uploader" class="well my-drop-zone">
  Drop files here
</div>

Both libraries provide similar functionality for file uploads, but ng2-file-upload is specifically designed for modern Angular applications. ng-file-upload offers more features but is better suited for AngularJS projects. The choice between the two depends on the Angular version used in the project and the specific requirements for file upload functionality.

28,920

The next open source file uploader for web browsers :dog:

Pros of Uppy

  • More comprehensive and feature-rich, supporting various upload sources and destinations
  • Modern, modular architecture with extensive plugin system
  • Better cross-browser compatibility and mobile support

Cons of Uppy

  • Larger file size and potentially more complex setup
  • Not specifically designed for Angular integration

Code Comparison

ng2-file-upload:

import { FileUploader } from 'ng2-file-upload';

const uploader = new FileUploader({
  url: 'https://example.com/upload',
  itemAlias: 'file'
});

Uppy:

import Uppy from '@uppy/core'
import XHRUpload from '@uppy/xhr-upload'

const uppy = new Uppy()
  .use(XHRUpload, { endpoint: 'https://example.com/upload' })

Key Differences

  • ng2-file-upload is specifically designed for Angular applications, while Uppy is framework-agnostic
  • Uppy offers a more extensive set of features, including drag-and-drop, progress bars, and webcam support
  • ng2-file-upload has a simpler API, making it easier to integrate for basic upload functionality in Angular projects

Use Cases

  • Choose ng2-file-upload for straightforward file uploads in Angular applications
  • Opt for Uppy when building complex file upload experiences across different frameworks or when requiring advanced features like resumable uploads or cloud storage integration

Simple HTML5 drag-drop zone with React.js.

Pros of react-dropzone

  • More flexible and customizable, allowing for greater control over the UI and functionality
  • Better suited for React applications, with seamless integration and React-specific features
  • Actively maintained with frequent updates and a large community

Cons of react-dropzone

  • Limited to React applications, whereas ng2-file-upload works with Angular
  • Requires more setup and configuration compared to ng2-file-upload's out-of-the-box functionality
  • May have a steeper learning curve for developers new to React or custom file upload implementations

Code Comparison

react-dropzone:

import React, { useCallback } from 'react'
import { useDropzone } from 'react-dropzone'

function MyDropzone() {
  const onDrop = useCallback(acceptedFiles => {
    // Do something with the files
  }, [])
  const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop })

  return (
    <div {...getRootProps()}>
      <input {...getInputProps()} />
      {isDragActive ? <p>Drop the files here ...</p> : <p>Drag 'n' drop some files here, or click to select files</p>}
    </div>
  )
}

ng2-file-upload:

import { Component } from '@angular/core';
import { FileUploader } from 'ng2-file-upload';

@Component({
  selector: 'app-file-upload',
  template: `
    <input type="file" ng2FileSelect [uploader]="uploader" />
    <button (click)="uploader.uploadAll()">Upload</button>
  `
})
export class FileUploadComponent {
  public uploader: FileUploader = new FileUploader({ url: 'https://your-url.com/upload' });
}

Multiple file upload plugin with image previews, drag and drop, progress bars. S3 and Azure support, image scaling, form support, chunking, resume, pause, and tons of other features.

Pros of fine-uploader

  • More comprehensive feature set, including drag-and-drop, chunking, and resume functionality
  • Better cross-browser compatibility, including support for older browsers
  • Extensive documentation and examples

Cons of fine-uploader

  • Larger file size and potentially more complex setup
  • Not specifically designed for Angular integration
  • May require more configuration for basic use cases

Code Comparison

fine-uploader:

var uploader = new qq.FineUploader({
    element: document.getElementById('uploader'),
    request: {
        endpoint: '/uploads'
    }
});

ng2-file-upload:

@Component({
  selector: 'app-uploader',
  template: '<input type="file" ng2FileSelect [uploader]="uploader" />'
})
export class UploaderComponent {
  public uploader: FileUploader = new FileUploader({url: '/uploads'});
}

Summary

fine-uploader offers a more feature-rich solution with better cross-browser support, while ng2-file-upload provides a simpler, Angular-specific implementation. The choice between the two depends on project requirements, with fine-uploader being more suitable for complex upload scenarios and ng2-file-upload offering easier integration for Angular applications.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

ng2-file-upload npm version npm downloads

Easy to use Angular2 directives for files upload (demo)

Angular 2 Style Guide Build Status

Quick start

  1. A recommended way to install ng2-file-upload is through npm package manager using the following command:

npm i ng2-file-upload

Alternatively, you can download it in a ZIP file.

  1. Currently ng2-file-upload contains two directives: ng2-file-select and ng2-file-drop. ng2-file-select is used for 'file-input' field of form and ng2-file-drop is used for area that will be used for dropping of file or files.

  2. More information regarding using of ng2-file-upload is located in demo and demo sources.

Using ng2-file-upload in a project

  1. Install as shown in the above section.

  2. Import FileUploadModule into the module that declares the component using ng2-file-upload:

import { FileUploadModule } from 'ng2-file-upload';

  1. Add it to [imports] under @NgModule:

imports: [ ... FileUploadModule, ... ]

  1. Import FileUploader into the component:

import { FileUploader } from 'ng2-file-upload';

  1. Create a variable for the API url:

const URL = 'path_to_api';

  1. Initialize it:

public uploader:FileUploader = new FileUploader({url: URL});

API for ng2FileSelect

Properties

  • uploader - (FileUploader) - uploader object. See using in demo

Events

  • onFileSelected - fires when files are selected and added to the uploader queue

API for ng2FileDrop

Properties

  • uploader - (FileUploader) - uploader object. See using in demo

Parameters supported by this object:

  1. url - URL of File Uploader's route
  2. authToken - Auth token that will be applied as 'Authorization' header during file send.
  3. disableMultipart - If 'true', disable using a multipart form for file upload and instead stream the file. Some APIs (e.g. Amazon S3) may expect the file to be streamed rather than sent via a form. Defaults to false.
  4. itemAlias - item alias (form name redefinition)
  5. formatDataFunction - Function to modify the request body. 'DisableMultipart' must be 'true' for this function to be called.
  6. formatDataFunctionIsAsync - Informs if the function sent in 'formatDataFunction' is asynchronous. Defaults to false.
  7. parametersBeforeFiles - States if additional parameters should be appended before or after the file. Defaults to false.

Events

  • fileOver - it fires during 'over' and 'out' events for Drop Area; returns boolean: true if file is over Drop Area, false in case of out. See using in ts demo and html demo
  • onFileDrop - it fires after a file has been dropped on a Drop Area; you can pass in $event to get the list of files that were dropped. i.e. (onFileDrop)="dropped($event)"

Troubleshooting

Please follow these guidelines when reporting bugs and feature requests:

  1. Use GitHub Issues board to report bugs and feature requests (not our email address)
  2. Please always write steps to reproduce the error. That way we can focus on fixing the bug, not scratching our heads trying to reproduce it.

Thanks for understanding!

License

The MIT License (see the LICENSE file for the full text)

NPM DownloadsLast 30 Days