upload with progress indicator