3.43.0 โ€ข Published 8 months ago

react-uploader v3.43.0

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

Installation

Install via NPM:

npm install react-uploader

Or via YARN:

yarn add react-uploader

Or via a <script> tag:

<script src="https://js.bytescale.com/react-uploader/v3"></script>

Usage

UploadButton โ€” Try on CodePen

The UploadButton component uses a render prop to provide an onClick callback to your button element.

When clicked, a file upload modal will appear:

import { Uploader } from "uploader"; // Installed by "react-uploader".
import { UploadButton } from "react-uploader";

// Initialize once (at the start of your app).
const uploader = Uploader({
  apiKey: "free" // Get production API keys from Bytescale
});

// Configuration options: https://www.bytescale.com/docs/upload-widget/frameworks/react#customize
const options = { multi: true };

const MyApp = () => (
  <UploadButton uploader={uploader}
                options={options}
                onComplete={files => alert(files.map(x => x.fileUrl).join("\n"))}>
    {({onClick}) =>
      <button onClick={onClick}>
        Upload a file...
      </button>
    }
  </UploadButton>
);

Required props:

  • uploader
  • children

Optional props:

  • options
  • onComplete

UploadDropzone โ€” Try on CodePen

The UploadDropzone component renders an inline drag-and-drop file upload dropzone:

import { Uploader } from "uploader"; // Installed by "react-uploader".
import { UploadDropzone } from "react-uploader";

// Initialize once (at the start of your app).
const uploader = Uploader({
  apiKey: "free" // Get production API keys from Bytescale
});

// Configuration options: https://www.bytescale.com/docs/upload-widget/frameworks/react#customize
const options = { multi: true };

const MyApp = () => (
  <UploadDropzone uploader={uploader}
                  options={options}
                  onUpdate={files => alert(files.map(x => x.fileUrl).join("\n"))}
                  width="600px"
                  height="375px" />
);

Required props:

  • uploader

Optional props:

  • options
  • onUpdate
  • width
  • height

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

React Uploader is the React 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

3.43.0

8 months ago

3.42.0

8 months ago

3.36.0

12 months ago

3.35.0

12 months ago

3.40.0

9 months ago

3.37.0

11 months ago

3.41.0

9 months ago

3.38.0

10 months ago

3.39.0

9 months ago

3.34.0

12 months ago

3.20.0

1 year ago

3.22.0

1 year ago

3.24.0

12 months ago

3.15.0

1 year ago

3.17.0

1 year ago

3.9.0

1 year ago

3.19.0

1 year ago

3.4.0

1 year ago

3.2.1

1 year ago

3.2.0

1 year ago

3.31.0

12 months ago

3.8.0

1 year ago

3.33.0

12 months ago

3.10.0

1 year ago

3.6.1

1 year ago

3.6.0

1 year ago

3.12.0

1 year ago

3.26.0

12 months ago

3.28.0

12 months ago

3.21.0

1 year ago

3.23.0

1 year ago

3.14.0

1 year ago

3.16.0

1 year ago

3.18.0

1 year ago

3.3.0

1 year ago

3.30.0

12 months ago

3.1.0

1 year ago

3.32.0

12 months ago

3.11.0

1 year ago

3.7.1

1 year ago

3.7.0

1 year ago

3.13.0

1 year ago

3.5.0

1 year ago

3.25.0

12 months ago

3.27.0

12 months ago

3.29.0

12 months ago

2.2.1

1 year ago

2.2.0

1 year ago

2.4.0

1 year ago

2.2.2

1 year ago

3.0.2

1 year ago

3.0.1

1 year ago

2.3.7

1 year ago

3.0.0

1 year ago

2.3.0

1 year ago

2.3.2

1 year ago

2.3.1

1 year ago

2.3.4

1 year ago

2.3.3

1 year ago

2.3.6

1 year ago

2.3.5

1 year ago

1.8.2

2 years ago

2.0.0-alpha.3

2 years ago

2.0.0-alpha.4

2 years ago

2.0.0-alpha.1

2 years ago

2.0.0-alpha.2

2 years ago

2.1.0

2 years ago

2.0.0

2 years ago

1.8.1

2 years ago

1.8.0

2 years ago

1.7.0

2 years ago

1.2.0

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.0

2 years ago

1.6.4

2 years ago

1.3.7

2 years ago

1.6.3

2 years ago

1.3.6

2 years ago

1.6.2

2 years ago

1.3.5

2 years ago

1.6.1

2 years ago

1.3.4

2 years ago

1.6.0

2 years ago

1.3.3

2 years ago

1.5.0

2 years ago

1.4.1

2 years ago

1.3.2

2 years ago

1.1.4

2 years ago

1.4.0

2 years ago

1.3.1

2 years ago

1.1.3

2 years ago

1.3.0

2 years ago

1.1.2

2 years ago

1.6.9

2 years ago

0.2.0

2 years ago

1.6.11

2 years ago

1.6.8

2 years ago

1.6.10

2 years ago

1.6.7

2 years ago

1.6.6

2 years ago

1.6.5

2 years ago

1.3.8

2 years ago

0.1.0

9 years ago