📁 Upload large files to Dropbox with chunking & web UI progress tracking

36 views · 📁 File Management

Description

Dropbox Large File Upload System

How It Works

This workflow enables uploading large files (300MB+) to Dropbox through a web interface with real-time progress tracking. It bypasses Dropbox’s 150MB single-request limit by breaking files into 8MB chunks and uploading them sequentially using Dropbox’s upload session API.

Upload Flow:

  1. User accesses page - Visits /webhook/upload-page and sees HTML form with file picker and folder path input
  2. Selects file - Chooses file and clicks “Upload to Dropbox” button
  3. JavaScript initiates session - Calls /webhook/start-session → Dropbox creates upload session → Returns sessionId
  4. Chunk upload loop - JavaScript splits file into 8MB chunks and for each chunk:
    • Calls /webhook/append-chunk with sessionId, offset, and chunk binary data
    • Dropbox appends chunk to session
    • Progress bar updates (e.g., 25%, 50%, 75%)
  5. Finalize upload - After all chunks uploaded, calls /webhook/finish-session with final offset and target path
  6. File committed - Dropbox commits all chunks into complete file at specified path (e.g., /Uploads/video.mp4)

Why chunking? Dropbox API has a 150MB limit for single upload requests. The upload session API (upload_session/start, append_v2, finish) allows unlimited file sizes by chunking.

Technical Architecture:

Setup Steps

Time estimate: ~20-25 minutes (first time)

  1. Create Dropbox app - Go to Dropbox App Console:

    • Click “Create app”
    • Choose “Scoped access” API
    • Select “Full Dropbox” access type
    • Name your app (e.g., “n8n File Uploader”)
    • Under Permissions tab, enable: files.content.write
    • Copy App Key and App Secret
  2. Configure n8n OAuth2 credentials - In n8n:

    • Create new “Dropbox OAuth2 API” credential
    • Paste App Key and App Secret
    • Set OAuth Redirect URL to your n8n instance (e.g., https://your-n8n.com/rest/oauth2-credential/callback)
    • Complete OAuth flow to get access token
  3. Connect credentials to HTTP nodes - Add your Dropbox OAuth2 credential to these three nodes:

    • “Dropbox Start Session”
    • “Dropbox Append Chunk”
    • “Dropbox Finish Session”
  4. Activate workflow - Click “Active” toggle to generate production webhook URLs

  5. Customize default folder (optional) - In “Respond with HTML” node:

    • Find line: <input type="text" id="dropboxFolder" value="/Uploads/" ...
    • Change /Uploads/ to your preferred default path
  6. Get upload page URL - Copy the production webhook URL from “Serve Upload Page” node (e.g., https://your-n8n.com/webhook/upload-page)

  7. Test upload - Visit the URL, select a small file first (~50MB), choose folder path, click Upload

Important Notes

File Size Limits:

Upload Behavior:

Security Considerations:

Dropbox API Quotas:

Progress Tracking:

Troubleshooting:

Performance:

Pro tip: Test with a small file (10-20MB) first to verify credentials and flow, then try larger files. Monitor n8n execution list to see each webhook call and troubleshoot any failures. For production, consider adding error handling and retry logic in the JavaScript.

🔗 Nodes Used

HTTP Request, Webhook

📥 Import

Download workflow.json and import into n8n: Workflow menu → Import from File

📖 Importing guide · 🔑 Credential setup