8.41.1 โ€ข Published 8 months ago

angular-uploader v8.41.1

Weekly downloads
3
License
MIT
Repository
github
Last release
8 months ago

Installation

Install via NPM:

npm install angular-uploader uploader

Or via YARN:

yarn add angular-uploader uploader

Initialization

Add the UploaderModule to your app:

import { NgModule } from "@angular/core";
import { BrowserModule } from "@angular/platform-browser";
import { UploaderModule } from "angular-uploader";

import { AppComponent } from "./app.component";

@NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserModule, 
    UploaderModule // <-- Add the Uploader module here.
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Components & Directives

Choose one of these options:

Option 1: Create an Upload Button โ€” Try on StackBlitz

The uploadButton directive displays a file upload modal on click.

Inputs:

  • uploader (required): an instance of the Uploader class.
  • uploadOptions (optional): an object following the UploadWidgetConfig interface.
  • uploadComplete (optional): a callback containing a single parameter โ€” an array of uploaded files.
import { Component } from '@angular/core';
import { Uploader, UploadWidgetConfig, UploadWidgetResult } from 'uploader';

@Component({
  selector: 'app-root',
  template: `
    <a href="{{ uploadedFileUrl }}" target="_blank">{{ uploadedFileUrl }}</a>
    <button
      uploadButton
      [uploadComplete]="onComplete"
      [uploadOptions]="options"
      [uploader]="uploader"
    >
      Upload a file...
    </button>
  `,
})
export class AppComponent {
  uploader = Uploader({
    apiKey: 'free', // <-- Get production-ready API keys from Bytescale
  });
  options: UploadWidgetConfig = {
    multi: false,
  };
  onComplete = (files: UploadWidgetResult[]) => {
    this.uploadedFileUrl = files[0]?.fileUrl;
  };
  uploadedFileUrl = undefined;
}

Option 2: Create a Dropzone โ€” Try on StackBlitz

The upload-dropzone component renders an inline drag-and-drop file uploader.

Inputs:

  • uploader (required): an instance of the Uploader class.
  • options (optional): an object following the UploadWidgetConfig interface.
  • onComplete (optional): a callback containing the array of uploaded files as its parameter.
  • onUpdate (optional): same as above, but called after every file upload or removal.
  • width (optional): width of the dropzone.
  • height (optional): height of the dropzone.
import { Component } from "@angular/core";
import { Uploader, UploadWidgetConfig, UploadWidgetResult } from "uploader";

@Component({
  selector: "app-root",
  template: `
    <upload-dropzone [uploader]="uploader" 
                     [options]="options"
                     [onUpdate]="onUpdate"
                     [width]="width"
                     [height]="height"> 
    </upload-dropzone>
  `
})
export class AppComponent {
  uploader = Uploader({ 
    apiKey: "free" 
  });
  options: UploadWidgetConfig = {
    multi: false
  };
  // 'onUpdate' vs 'onComplete' attrs on 'upload-dropzone':
  // - Dropzones are non-terminal by default (they don't have an end
  //   state), so by default we use 'onUpdate' instead of 'onComplete'.
  // - To create a terminal dropzone, use the 'onComplete' attribute
  //   instead and add the 'showFinishButton: true' option.
  onUpdate = (files: UploadWidgetResult[]) => {
    alert(files.map(x => x.fileUrl).join("\n"));
  };
  width = "600px";
  height = "375px";
}

The Result

The callbacks receive a Array<UploadWidgetResult>:

{
  fileUrl: "https://upcdn.io/FW25...",   // URL to use when serving this file.
  filePath: "/uploads/example.jpg",      // File path (we recommend saving this to your database).
    
  editedFile: undefined,                 // Edited file (for image crops). Same structure as below.

  originalFile: {
    fileUrl: "https://upcdn.io/FW25...", // Uploaded file URL.
    filePath: "/uploads/example.jpg",    // Uploaded file path (relative to your raw file directory).
    accountId: "FW251aX",                // Bytescale account the file was uploaded to.
    originalFileName: "example.jpg",     // Original file name from the user's machine.
    file: { ... },                       // Original DOM file object from the <input> element.
    size: 12345,                         // File size in bytes.
    lastModified: 1663410542397,         // Epoch timestamp of when the file was uploaded or updated.
    mime: "image/jpeg",                  // File MIME type.
    metadata: {
      ...                                // User-provided JSON object.
    },
    tags: [
      "tag1",                            // User-provided & auto-generated tags.
      "tag2",
      ...
    ]
  }
}

๐ŸŒ API Support

๐ŸŒ File Management API

Bytescale provides an Upload API, which supports the following:

  • File uploading.
  • File listing.
  • File deleting.
  • And more...

Uploading a "Hello World" text file is as simple as:

curl --data "Hello World" \
     -u apikey:free \
     -X POST "https://api.bytescale.com/v1/files/basic"

Note: Remember to set -H "Content-Type: mime/type" when uploading other file types!

Read the Upload API docs ยป

๐ŸŒ Image Processing API (Resize, Crop, etc.)

Bytescale also provides an Image Processing API, which supports the following:

Read the Image Processing API docs ยป

Original Image

Here's an example using a photo of Chicago:

https://upcdn.io/W142hJk/raw/example/city-landscape.jpg

Processed Image

Using the Image Processing API, you can produce this image:

https://upcdn.io/W142hJk/image/example/city-landscape.jpg
  ?w=900
  &h=600
  &fit=crop
  &f=webp
  &q=80
  &blur=4
  &text=WATERMARK
  &layer-opacity=80
  &blend=overlay
  &layer-rotate=315
  &font-size=100
  &padding=10
  &font-weight=900
  &color=ffffff
  &repeat=true
  &text=Chicago
  &gravity=bottom
  &padding-x=50
  &padding-bottom=20
  &font=/example/fonts/Lobster.ttf
  &color=ffe400

Full Documentation

Uploader Documentation ยป

Need a Headless (no UI) File Upload Library?

Try Upload.js ยป

Can I use my own storage?

Yes: Bytescale supports AWS S3, Cloudflare R2, Google Storage, and DigitalOcean Spaces.

To configure a custom storage backend, please see:

https://www.bytescale.com/docs/storage/sources

๐Ÿ‘‹ Create your Bytescale Account

Angular Uploader is the Angular Upload Widget for Bytescale: the best way to serve images, videos, and audio for web apps.

Create a Bytescale account ยป

Building From Source

BUILD.md

License

MIT

8.41.0

9 months ago

8.41.1

8 months ago

8.39.0

10 months ago

8.40.0

9 months ago

8.38.0

11 months ago

8.30.0

1 year ago

8.32.0

12 months ago

8.34.0

12 months ago

8.36.0

12 months ago

8.26.0

1 year ago

8.28.0

1 year ago

8.31.0

1 year ago

8.33.0

12 months ago

8.35.0

12 months ago

8.37.0

12 months ago

8.27.0

1 year ago

8.29.0

1 year ago

8.22.0

1 year ago

8.24.0

1 year ago

8.21.0

1 year ago

8.23.0

1 year ago

8.25.0

1 year ago

8.18.0

1 year ago

8.17.0

1 year ago

8.20.0

1 year ago

8.19.0

1 year ago

8.12.0

1 year ago

8.11.0

1 year ago

8.14.0

1 year ago

8.13.0

1 year ago

8.16.0

1 year ago

8.15.0

1 year ago

8.10.0

1 year ago

8.10.1

1 year ago

8.9.0

1 year ago

8.8.1

1 year ago

8.8.0

1 year ago

8.2.3

1 year ago

8.4.0

1 year ago

8.2.2

1 year ago

8.7.0

1 year ago

8.6.0

1 year ago

7.1.0

1 year ago

8.1.0

1 year ago

8.0.0

1 year ago

8.3.0

1 year ago

8.2.1

1 year ago

8.2.0

1 year ago

6.2.9

2 years ago

6.1.0

2 years ago

6.0.1

2 years ago

6.0.0

2 years ago

6.2.1

2 years ago

6.0.3

2 years ago

6.2.0

2 years ago

6.1.1

2 years ago

6.0.2

2 years ago

6.2.3

2 years ago

6.2.2

2 years ago

6.2.5

2 years ago

6.2.4

2 years ago

6.2.7

2 years ago

6.2.6

2 years ago

6.2.8

2 years ago

5.0.1

6 years ago

5.0.0

6 years ago