Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Modern file uploading - components & hooks for React

License

NotificationsYou must be signed in to change notification settings

rpldy/react-uploady

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

React Uploady LogoReact Uploady Logo

Modern file-upload components & hooks for React.

npm versionBuild Statuscodecov statusrpldy storybooklernaMIT License

Contents

Intro

React-Uploady is a lightweight library - enabling you to build (client-side) file-upload features with just a few lines of code. Uploady provides the foundations needed to upload files from the browser - The rest is up to you.

React-Uploady Demo

The philosophy behind this library is that it should be as simple as possible to use, yet customizable at every point.You can start simple, or you can configure just about every aspect of the upload flow.For this purpose, there are components, hooks, and plenty of features.You get to choose which ones you need and only install the dependencies required (SeePackages details below)

React-Uploady has a small footprint (by design) with very few (tiny) dependencies.

BundleMinified sizeGZipped size
core29.1KB10.5KB
core + ui36.9KB13.3KB
core + ui + chunked support44.1KB15.7KB
everything71.0KB22.9KB

Documentation

Getting Started

The best place to get started is at our:React-Uploady Documentation Website

Another great place to learn about React-Uploady is ourvideo series on Youtube.

Changelog

For a list of versions and changes, see theCHANGELOG

Discussions

Please check thediscussions area here in Github. If you have a question about use-cases or flows you'd like to achieve with Uploady, discussions is the place to look for existing answers or add your own.

If you're using Uploady in Production, please drop a commenthere. It's always great to hear how people and companies use it.

Installation

React-uploady is a mono-repo, and as such provides multiple packages with different functionality.

For React applications, at the very least, you will need the Uploady provider:

#Yarn:   $ yarn add @rpldy/uploady#NPM:   $ npm i @rpldy/uploady

If you wish to use the uploading mechanism (no UI), at the very least, you will need the Uploader:

#Yarn:  $ yarn add @rpldy/uploader#NPM:  $ npm i @rpldy/uploader

After that, you can add additional packages as needed. See below for more details.

Packages

Main Packages

UI Packages

Providers

Senders

Extras

Internal Packages

Examples

For specific usage, see documentation in the relevant package README file.

For upload options, see the@rpldy/uploady docs.

Simple Upload Button

This example shows how you add Uploady and UploadButton to your app.This is all it takes to get file uploading to work in your React application.

importReactfrom"react";importUploadyfrom"@rpldy/uploady";importUploadButtonfrom"@rpldy/upload-button";constApp=()=>(<Uploadydestination={{url:"https://my-server/upload"}}><UploadButton/></Uploady>);

Custom Upload Button

In case you want to use your own component as the upload trigger, use the asUploadButton HOC:

importReactfrom"react";importUploadyfrom"@rpldy/uploady";import{asUploadButton}from"@rpldy/upload-button";constDivUploadButton=asUploadButton((props)=>{return<div{...props}style={{cursor:"pointer"}}>        DIV Upload Button</div>});constApp=()=>(<Uploadydestination={{url:"https://my-server/upload"}}><DivUploadButton/></Uploady>);

Progress Hook

importReactfrom"react";importUploady,{useItemProgressListener}from"@rpldy/uploady";importUploadButtonfrom"@rpldy/upload-button";//must be rendered inside <Uploady>constLogProgress=()=>{useItemProgressListener((item)=>{console.log(`>>>>> (hook) File${item.file.name} completed:${item.completed}`);});returnnull;}constApp=()=>(<Uploadydestination={{url:"https://my-server/upload"}}><LogProgress/><UploadButton/></Uploady>);

Add support for resumable(tus) uploads

importReactfrom"react";importTusUploadyfrom"@rpldy/tus-uploady";importUploadButtonfrom"@rpldy/upload-button";constApp=()=>(<TusUploadydestination={{url:"https://my-tus-server/upload"}}chunkSize={2142880}sendDataOnCreate><UploadButton/></TusUploady>);

Add support for chunked uploads

Can be used with servers that support chunked uploads

importReactfrom"react";importChunkedUploadyfrom"@rpldy/chunked-uploady";importUploadButtonfrom"@rpldy/upload-button";constApp=()=>(<ChunkedUploadydestination={{url:"https://my-server/upload"}}chunkSize={5242880}><UploadButton/></ChunkedUploady>);

Find more (advanced) examples in ourguides andstorybook.

Important Concepts

Upload Options

These are the options that are passed to theuploader to configure aspects of the upload process.For example, whether files can be grouped in a single request (by default, no).

Upload Options are typically passed to theUploady instance. But these can be overridden. For example, by props passed to theupload button.Or even duringupload processing.

Destination

Passed as a part of the upload options. It's an object that is used to configure the end-point where the files will be uploaded to.Its type is definedhere.

See more information in theUploady doc.

At the very least, a destination should contain a URL property with the server endpoint.

Enhancer

(uploader:UploaderType,trigger:Trigger<mixed>)=>UploaderType

Enhancers are functions that can enhance an uploader instance. They are also passed as part of the options given to the Uploady instance.

As they are applied when the uploader instance is created, they can change the way uploader does things or pass different defaults.

See thisguide for practical information and sample code.

Batch

When a file or files are handed over to the uploader, they are grouped into a batch.This batch will have its own lifetimeevents.With a batch ID, it is possible to cancel all files that are part of it. It can also be used to retry all files in the batch (see@rpldy/retry).

BatchItem

Each file (or URL) added to the uploader is wrapped by a BatchItem object. They will have a unique ID within the life-time of the uploader instance.A BatchItem has its own lifetimeevents.

Resumable Uploads

Uploady supports resumable uploads through thetusprotocol.Instead of using <Uploady> from @rpldy/uploady, use <TusUploady> from @rpldy/tus-uploady and you will have resumable upload support on the client side.Your server will also have to support the same protocol for this to work, of course.

See the@rpldy/tus-uploady documentation for more details.

UMD Bundles

React-uploady is also available on CDNs such asunpkg.com andjsdelivr.com

See thisguide for more information on how to use.

jsDelivr

BundleURL
corehttps://cdn.jsdelivr.net/npm/@rpldy/uploader/lib/umd/rpldy-core.umd.min.js
core + uihttps://cdn.jsdelivr.net/npm/@rpldy/uploady/lib/umd/rpldy-ui-core.umd.min.js
core + ui + chunked supporthttps://cdn.jsdelivr.net/npm/@rpldy/chunked-uploady/lib/umd/rpldy-ui-core-chunked.umd.min.js
everythinghttps://cdn.jsdelivr.net/npm/@rpldy/uploady/lib/umd/rpldy-all.umd.min.js

You will most likely need the polyfill (core js) bundle as well (load it first):

unpkg

BundleURL
corehttps://unpkg.com/@rpldy/uploader/lib/umd/rpldy-core.umd.min.js
core + uihttps://unpkg.com/@rpldy/uploady/lib/umd/rpldy-ui-core.umd.min.js
core + ui + chunked supporthttps://unpkg.com/@rpldy/chunked-uploady/lib/umd/rpldy-ui-core-chunked.umd.min.js
everythinghttps://unpkg.com/@rpldy/uploady/lib/umd/rpldy-all.umd.min.js

You will most likely need the polyfill (core js) bundle as well (load it first):

Note that unpkg does a redirect to the latest version in case the URL doesn't already contain it. So don't copy any of the URLs above into your code.Instead, load them in the browser first and then copy the final URL from there (after the redirect).

Contribute

Show Uploady your support by giving us a.

If you'd like to help Uploady grow & improve, take a look at theContributing doc.

TheDiscussions page is a great place to ask questions, raise ideas and interact with Uploady maintainer, users and contributors.

Already using Uploady in Production? Let us know how & where in this opendiscussion.

Financial Contributors

Companies/Organizations that have contributed to the project:

Support us

Want to help sustain and grow Uploady? You can become a financial backer on OpenCollective.

Become a financial contributor and help us sustain our community.

You can make a one-time contribution or on a monthly basis

Or justbuy me a coffee 😄

Acknowledgements

logo's wing thanks toIllustration Vectors by Vecteezy


[8]ページ先頭

©2009-2025 Movatter.jp