What is the behavior of uploadfile/stream/bytearray etc when the file already exists on the server? Overwrite, or error?
That's a server-side decision and may depend on the server configuration. The safest option is to take the decision away from the server by checking for existence before uploading and coding for both cases.
Is there any option to control the behavior?
No, not on the client.
Is "append" supported (I think not but need to ask. )
Yes it is. The third argument for SecureFTPConnection.UploadByteArray is a bool named 'append'.