API ReferencefunctionsUsemultipleupload

upload-with-progress


useMultipleUpload<TMeta>(options): UseMultipleUploadReturn<TMeta>

Defined in: src/browser/useMultipleUpload.ts:81

React hook for uploading multiple files with per-file progress, automatic retries, timeouts, concurrency control, and file validation.

Type Parameters

TMeta

TMeta = unknown

The shape of the metadata your backend returns per file.

Parameters

options

UseMultipleUploadOptions = {}

Returns

UseMultipleUploadReturn<TMeta>

Example

const { upload, jobs, overallProgress, abortAll, reset } =
  useMultipleUpload<{ key: string }>({
    maxFileSize: 50 * 1024 * 1024,
    allowedTypes: ["image/*", "video/*"],
    timeout: 120_000,
    retries: 2,
    concurrency: 3,
  });
 
const handleUpload = async (files: File[]) => {
  const results = await upload(files, async (file, index) => {
    const res = await fetch(`/api/presign?name=${file.name}`);
    return res.json();
  });
  const succeeded = results.filter(r => r.status === "fulfilled");
  console.log(`${succeeded.length}/${results.length} uploaded`);
};