EZ File Upload for VS Code
A simple VS Code extension that adds "Upload Files Here..." to the Explorer context menu, allowing you to easily copy files from anywhere on your system into your workspace folders.
Compatible with VS Code, Cursor, and Antigravity editors.
Features
- Command Palette Access: Invoke from Command Palette (Cmd+Shift+P / Ctrl+Shift+P) with smart destination detection
- Context Menu Integration: Right-click any folder in the Explorer to upload files directly
- Smart Upload Confirmation:
- Context Menu: Direct upload to selected folder (no confirmation by default)
- Command Palette: Always shows location confirmation
- Configurable: Enable confirmation for context menu via settings
- Multi-file Selection: Select and upload multiple files at once
- Smart Destination Detection: When using Command Palette, automatically uploads to:
- Active file's parent directory (if a file is open)
- Workspace root folder (if no file is open)
- Smart Environment Detection: Automatically uses the right file picker for your environment
- Local Workspaces: Native OS file picker dialog
- Remote Workspaces: Webview-based picker to browse your local machine's files
- Progress Tracking: Real-time progress notifications during upload
- Conflict Resolution: Automatically prompts when files already exist (Overwrite/Skip)
- Cancellable Operations: Cancel uploads in progress (local workspaces)
- Remote Workspace Support: Full support for GitHub Codespaces, SSH, WSL, Dev Containers, Cursor, and Antigravity
Screenshots
Command Palette Access

Upload Location Confirmation


Usage
From Command Palette
- Open Command Palette (Cmd+Shift+P / Ctrl+Shift+P)
- Type "Upload Files Here..." and select the command
- Files will be uploaded to:
- The parent directory of your currently open file (if you have a file open)
- The workspace root folder (if no file is open)
- Confirm the upload location (press Enter to confirm, or edit the path, or Esc to cancel)
- Choose files and follow the same process as context menu usage below
- Right-click any folder in the VS Code Explorer
- Select "Upload Files Here..." from the context menu
- Choose one or more files from the native OS file picker dialog (no confirmation needed)
- Monitor progress in the notification
- If a file already exists, choose to Overwrite or Skip
- Right-click any folder in the VS Code Explorer
- Select "Upload Files Here..." from the context menu
- A webview panel opens with "Browse Files..." button (no confirmation needed)
- Click "Browse Files..." to open your local machine's file picker
- Select one or more files from your local computer
- Review the file list with sizes in the webview
- Click "Upload Selected Files"
- If a file already exists, choose to Overwrite or Skip
- The webview closes automatically upon successful upload
Installation
From VSIX
- Download the
.vsix file
- In VS Code, open Extensions (Cmd+Shift+X / Ctrl+Shift+X)
- Click the "..." menu → "Install from VSIX..."
- Select the downloaded
.vsix file
From Source
git clone <repository-url>
cd ez-file-upload
npm install
npm run compile
Press F5 to launch the Extension Development Host for testing.
Building
# Compile TypeScript
npm run compile
# Package as VSIX
npx @vscode/vsce package
Configuration
Settings
ez-file-upload.confirmContextMenuUpload (default: false)
- When disabled (default): Context menu "Upload Files Here..." uploads directly to the selected folder
- When enabled: Shows confirmation dialog before file selection, even for context menu
- Command Palette uploads always show confirmation regardless of this setting
To enable confirmation for context menu:
- Open Settings (Cmd+, / Ctrl+,)
- Search for "EZ File Upload"
- Enable "Confirm Context Menu Upload"
Requirements
- VS Code version 1.85.0 or higher
Development
Architecture
The extension intelligently adapts to different VS Code environments:
Local Workspaces:
- Uses
vscode.window.showOpenDialog() for native OS file picker
- Files copied using
vscode.workspace.fs.copy()
Remote Workspaces:
- Detects remote environment via
vscode.env.remoteName
- Opens a webview panel with HTML5
<input type="file"> element
- Files read as
ArrayBuffer in the webview's JavaScript context
- Data transferred to extension via
postMessage()
- Files written using
vscode.workspace.fs.writeFile()
This approach ensures that file selection always happens on the local machine, even when the editor is connected to:
- GitHub Codespaces
- Remote SSH workspaces
- WSL (Windows Subsystem for Linux)
- Dev Containers
- Cursor editor
- Antigravity editor
- Any remote environment where
vscode.env.remoteName is defined
License
See LICENSE file for details.