They should fire once each each. Otherwise there's a bug. Ensure you've got the latest version, and if you do, please have a go at debugging and see where it is being called twice.
bytes[] is only used if you are uploading a byte array. For file upload progress look at the BytesTransferred event.