FTP clients, including those used programatically, allow the user to select ASCII or Binary transfers when uploading a file. Some clients also support some flavor of Auto, where you leave it to the FTP client to decide.
What are some correct reasons to select one format over the other? How does one decide? Besides the clients supporting Auto-detect, how can one automate this decision?