CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-gradio--upload

File upload component for the Gradio machine learning web application framework

Pending
Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

SecuritybySnyk

Pending

The risk profile of this skill

Overview
Eval results
Files

upload-component.mddocs/

File Upload Interface

The Upload component provides comprehensive file upload functionality with drag-and-drop support, file type validation, and real-time progress tracking. It handles single files, multiple files, or entire directory uploads with extensive customization options.

Capabilities

Upload Component

Main file upload component with comprehensive drag-and-drop support, file validation, and progress tracking.

// Svelte Component Import
import { Upload } from "@gradio/upload";

// Component Props Interface
interface UploadProps {
  /** Accepted file types - string, array of strings, or null for any */
  filetype?: string | string[] | null;
  /** Current dragging state indicator */
  dragging?: boolean;
  /** Apply bounded height styling */
  boundedheight?: boolean;
  /** Center content alignment */
  center?: boolean;
  /** Enable flex layout styling */
  flex?: boolean;
  /** Upload mode - single file, multiple files, or directory */
  file_count?: "single" | "multiple" | "directory";
  /** Disable click-to-upload functionality */
  disable_click?: boolean;
  /** Server root URL for uploads */
  root: string;
  /** Hide the upload component */
  hidden?: boolean;
  /** File format handling mode */
  format?: "blob" | "file";
  /** Current upload state indicator */
  uploading?: boolean;
  /** Show upload progress visualization */
  show_progress?: boolean;
  /** Maximum file size limit in bytes */
  max_file_size?: number | null;
  /** Upload function from @gradio/client */
  upload: Client["upload"];
  /** Stream handler from @gradio/client for progress tracking */
  stream_handler: Client["stream"];
  /** Enable icon mode styling */
  icon_upload?: boolean;
  /** Component height (number in pixels or CSS string) */
  height?: number | string | undefined;
  /** Accessibility label for screen readers */
  aria_label?: string | undefined;
}

Component Methods

The Upload component exposes several methods for programmatic control:

/**
 * Programmatically open the file picker dialog
 */
export function open_upload(): void;

/**
 * Handle clipboard paste for image files
 * Automatically extracts image data from clipboard and processes it
 */
export function paste_clipboard(): void;

/**
 * Programmatically open file upload dialog (alternative method)
 */
export function open_file_upload(): void;

/**
 * Load and process files programmatically
 * @param files - Array of File or Blob objects to process
 * @returns Promise resolving to processed FileData array or void
 */
export async function load_files(
  files: File[] | Blob[]
): Promise<(FileData | null)[] | void>;

/**
 * Handle drag-and-drop file loading
 * @param e - DragEvent containing dropped files
 */
export async function load_files_from_drop(e: DragEvent): Promise<void>;

/**
 * Handle file upload from file input selection
 * @param files - Array of Files from file input or drag-drop
 */
async function load_files_from_upload(files: File[]): Promise<void>;

Component Events

The Upload component dispatches events for file handling and error reporting:

// Event Handlers
interface UploadEvents {
  /** Fired when files are successfully loaded and processed */
  load: (event: CustomEvent<FileData | FileData[]>) => void;
  /** Fired when upload errors occur */
  error: (event: CustomEvent<string>) => void;
}

Usage Examples:

import { Upload } from "@gradio/upload";
import { client } from "@gradio/client";
import type { Client } from "@gradio/client";

const gradioClient: Client = await client("https://api.example.com");

// Basic single file upload
<Upload
  filetype="image"
  file_count="single"
  root="https://api.example.com"
  upload={gradioClient.upload}
  stream_handler={gradioClient.stream}
  on:load={(event) => {
    console.log("Single file uploaded:", event.detail);
  }}
>
  <div>Click to upload an image</div>
</Upload>

// Multiple file upload with restrictions
<Upload
  filetype={["image/jpeg", "image/png", ".pdf"]}
  file_count="multiple"
  max_file_size={10485760} // 10MB
  root="https://api.example.com"
  upload={gradioClient.upload}
  stream_handler={gradioClient.stream}
  on:load={(event) => {
    console.log("Multiple files uploaded:", event.detail);
  }}
  on:error={(event) => {
    console.error("Upload failed:", event.detail);
  }}
>
  <div>Drop multiple files here or click to browse</div>
</Upload>

// Directory upload
<Upload
  file_count="directory"
  root="https://api.example.com"
  upload={gradioClient.upload}
  stream_handler={gradioClient.stream}
  on:load={(event) => {
    console.log("Directory uploaded:", event.detail);
  }}
>
  <div>Select a folder to upload</div>
</Upload>

// Clipboard paste support
<Upload
  filetype="clipboard"
  root="https://api.example.com"
  upload={gradioClient.upload}
  stream_handler={gradioClient.stream}
  on:load={(event) => {
    console.log("Pasted from clipboard:", event.detail);
  }}
>
  <div>Paste image from clipboard</div>
</Upload>

File Type Validation

The component supports flexible file type validation:

// Single file type
filetype="image"          // Accepts image/*
filetype=".pdf"           // Accepts .pdf files
filetype="image/jpeg"     // Accepts only JPEG images

// Multiple file types
filetype={["image", "video"]}           // Accepts image/* and video/*
filetype={[".pdf", ".doc", ".docx"]}    // Accepts specific extensions
filetype={["image/jpeg", "image/png"]}  // Accepts specific MIME types

// Special values
filetype={null}           // Accepts any file type
filetype="*"              // Accepts any file type
filetype="file/*"         // Accepts any file type

Upload Modes

The file_count prop controls upload behavior:

  • "single": Allows one file selection, returns single FileData object
  • "multiple": Allows multiple file selection, returns FileData array
  • "directory": Allows directory selection, returns FileData array of all files

Progress Tracking

When show_progress is true, the component automatically displays upload progress using the internal UploadProgress component that connects to server-sent events for real-time updates.

Error Handling

The component validates files and emits error events for:

  • Invalid file types
  • Files exceeding max_file_size
  • Upload failures
  • Network errors during upload

Accessibility

The component includes comprehensive accessibility support:

  • ARIA labels for screen readers
  • Keyboard navigation support
  • Focus management during drag operations
  • Descriptive error messages

docs

drag-drop.md

index.md

modify-upload.md

upload-component.md

tile.json