ticket:1 Upload implementation