Unless the remote server is doing something weird, the file doesn't need to be sent as an object. You don't need to construct an array like that on your server, it is entirely up to the remote server to deal with the file however it likes (it might not be using PHP at all).
Uploading a file with cURL is essentially the same as any other request. Create a cURL handle with curl_init(), set the appropriate options, then execute the request.
$ch = curl_init('http://remote.server/upload');
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS = array(
'file_field_name' => '@/path/to/some/file/on/server',
'another_field' => 'some value',
$response = curl_exec($ch);
The important part is specifying that the
file_field_name (or whatever the remote server needs) field should be a file; this is done by prefixing the value with an
@ followed by the path to the file on your server.