RefirebaseRefirebase

uploadWithProgress

new

Upload a file with real-time progress reporting and pause/resume/cancel control.

Usage

Returns both the underlying Firebase UploadTask for control and a Promise that resolves to the final result. The onProgress callback fires with a number from 0 to 100.

uploadWithProgress
const { task, promise } = db.storage.uploadWithProgress(
  'videos/clip.mp4',
  file,
  {
    onProgress: (pct) => console.log(pct + '%'),
    downloadUrl: true,
  },
);

// Await the result
const result = await promise;
console.log(result.downloadUrl);

Pause, resume, cancel

task control
const { task, promise } = db.storage.uploadWithProgress('files/doc.pdf', file);

// Control the upload
task.pause();
task.resume();
task.cancel();

// Or await result
const result = await promise;

React hook

For React, use the useUploadTask hook instead, which manages state automatically.

useUploadTask
// For React, use the hook instead
import { useUploadTask } from 'refirebase/react';

const { upload, progress, state, pause, resume, cancel } = useUploadTask();

await upload('avatars/me.jpg', file, { downloadUrl: true });

Parameters

ParamTypeDescription
filePath*stringStorage path.
file*BlobFile to upload.
options.onProgress(pct: number) => voidCallback fired with progress 0–100.
options.downloadUrlbooleanInclude a download URL in the result.(default: false)
options.contentTypestringOverride MIME type.

Return value

Returns

{ task: UploadTask; promise: Promise<StorageUploadResult> }

task for pause/resume/cancel control, promise resolves to the upload result.