It depends on your lifecycle template. Assuming the starting state is 'In work', if the template allows revise from 'In Work' to 'In Work', then you can change the revision before ever uploading or checking in. If instead you only allow revise from 'Released' (or whatever you are calling it), then you have to check in first, then release, then revise to the intended target revision.
I think there is a product idea somewhere requesting the ability to set revision at object creation.