Skip to content

uploadcare/react-file-uploader

Repository files navigation

Uploadcare logo

WebsiteDocsBlogDiscordTwitter

Uploadcare React Uploader

NPM version Build Status GitHub release Uploadcare stack on StackShare

Welcome to the Uploadcare React Uploader documentation! This documentation provides guidance on how to use the Uploadcare React Uploader in your projects, along with details about its features, installation process, usage examples, customization options, event handling, and security considerations.

Uploadcare File Uploader examples

Quick start

From NPM:

  1. Install the package:
npm install @uploadcare/react-uploader
  1. Connect React Uploader from your script file:
import { FileUploaderRegular } from "@uploadcare/react-uploader";
import "@uploadcare/react-uploader/core.css";

<FileUploaderRegular pubkey="YOUR_PUBLIC_KEY"/>;

Props

An easy way to connect React Uploader to your project and utilize the available API props. We provide a full set of props that are used in File Uploader. For review we suggest you to look at the documentation.

File Uploader API

For convenience, we provide the ability to access the File Uploader API using apiRef. You can see what methods are available in apiRef in the documentation. It is important to note that we now pass all InstanceType from UploadCtxProvider.

import React, {useRef, useEffect} from "react";
import {
    FileUploaderRegular,
    UploadCtxProvider
} from "@uploadcare/react-uploader";
import "@uploadcare/react-uploader/core.css";

const Example = () => {
  const uploaderRef = useRef<InstanceType<UploadCtxProvider> | null>(null);

  <FileUploaderRegular apiRef={uploaderRef} pubkey="YOUR_PUBLIC_KEY"/>;
}

Events

Events in React Uploader are the same as in File Uploader, see the documentation. The principle of converting events from blocks to React Uploader:

  1. All events in React Uploader start with on.
  2. All events in React Uploader in camelCase.
import { FileUploaderRegular } from "@uploadcare/react-uploader";
import "@uploadcare/react-uploader/core.css";

<FileUploaderRegular
  pubkey="YOUR_PUBLIC_KEY"
  onModalOpen={() => {
      console.log('modal-open')
  }}
/>

Styles

You can customize the appearance of the React Uploader by using the className prop, which lets you apply custom CSS classes to the FileUploader wrapper, including the Regular, Minimal, and Inline variations.

However, if you need to assign a class specifically to the uploader file. Use the classNameUploader prop.

import { FileUploaderRegular } from "@uploadcare/react-uploader";
import "@uploadcare/react-uploader/core.css";

<FileUploaderRegular 
  classNameUploader="uc-dark" 
  className="fileUploaderWrapper" 
  pubkey="YOUR_PUBLIC_KEY"
/>;
.fileUploaderWrapper uc-file-uploader-regular {
}

Next.js

File Uploader does not support Server-side Rendering (SSR), we have a special import for nextjs that already has SSR disabled. You will need to import with import @uploadcare/react-uploader/next

'use client'
import { FileUploaderRegular } from "@uploadcare/react-uploader/next";
import "@uploadcare/react-uploader/core.css";

function App() {
    return <FileUploaderRegular pubkey="YOUR_PUBLIC_KEY" />
};

Security issues

If you think you ran into something in Uploadcare libraries that might have security implications, please hit us up at bugbounty@uploadcare.com or Hackerone.

We'll contact you personally in a short time to fix an issue through co-op and prior to any public disclosure.

Feedback

Issues and PRs are welcome. You can provide your feedback or drop us a support request at hello@uploadcare.com.