Well, it would have to be the receiving server that gets the file. To do that it would have to know when to get it and what exactly to ask for. (Not to mention being allowed to get it - perhaps you don't want just anyone being able to request the file.)
So at some point the sending server will have to tell the receiving server what file it should get. But if the sending server is going to do that, it might as well send the file itself. And you're still in the situation where the sending server has to create something and send it to the receiving server.
So I'd go with one of the solutions here. It's the sending server that constructs a POST request that contains the file it's sending (the whole file, not just the name); the receiving server receives this request and processes in the usual fashion. The choice is who to construct that request: an http stream context (the sleekest solution); a cURL request (that thing needs a better interface); or you could go old school and do the whole protocol by hand and use fsockopen (but if cURL is scary...).