Client upload logic