Works with any backend npm install Zero dependencies

Pick files straight from Microsoft OneDrive (personal + business)

Built-in OneDrive adapter. Lazy-loads OneDrive.js v7.2 on first click and uses the official Microsoft picker UI. Returns @microsoft.graph.downloadUrl direct links - good for ~1 hour - handed straight to the existing /import-url endpoint with NDJSON live progress. Works for both personal Microsoft accounts and Entra ID (Azure AD) work/school accounts.

Setup required. Register an app in Microsoft Entra ID, grab the client ID, then configure before instantiating:
MultipleUpload.configureRemoteSource('onedrive', {
 clientId: 'YOUR_ENTRA_CLIENT_ID',
 scopes: 'files.read' // default; expand to 'files.readwrite' if needed
});
App registration: entra.microsoft.com -> App registrations -> New registration -> Single-page application -> Redirect URI = your site origin.
Returned RemoteFile shape
{
 url: 'https://onedrive.live.com/download?cid=...&authkey=...',
 fileName: 'budget-2026.xlsx',
 fileSize: 158_720,
 contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
}
Personal vs. business accounts
  • Personal (consumers.live.net): sign up your app at portal.azure.com, supported account types = "Personal Microsoft accounts only".
  • Work / school (Entra ID): same portal, supported account types = "Accounts in any organizational directory + personal Microsoft accounts" for the widest reach.
  • The same picker UI is shown in both cases - the user's account auto-detects which tenant is appropriate.
Cloud picker trio at a glance
SourceAuthDirect URL TTLSetup config
'googledrive'OAuth (gsi)~1 hour (bearer){ apiKey, clientId }
'dropbox'OAuth (popup)4 hours{ appKey }
'onedrive'OAuth (popup)~1 hour{ clientId, scopes? }
Mix them in one uploader
new MultipleUpload('#uploader', {
 uploadUrl: '/api/upload',
 remoteSources: ['googledrive', 'dropbox', 'onedrive']
});