lab upload client-side