FTP Authentication with Public Key?
Solution 1:
FTP can use SSL, which supports client authentication using X.509 certificates. However, while many FTP servers support FTPS, I don't know of any which support client certificates. (In addition, client authentication is complicated in SSL – in many cases, you would have to create and maintain your own certificate authority and stuff. Not many clients support this kind of authentication, either.)
Much easier is to use SFTP, the SSH file transfer protocol. It uses exactly the same keys as "normal" SSH would. On Windows, WinSCP and FileZilla support SFTP.