Você pode enviar utilizando a bilbioteca FTP do PHP (vide exemplo abaixo).
Ou alguma API de envio, caso o Host B aceite isso.
Dá uma olhada na documentação que tem vários exemplos usando FTP.
A seguir um exemplo básico para entendimento:
<?php
// define nome do arquivo no servidor local
$file = '/home/path/nome-do-arquivo-local.jpg';
// copia arquivo para o servidor local
copy($_FILES['arquivo']['tmp_name'], $file);
// dados do ftp
$ftp_server="ftp.host-b.com";
$ftp_user_name="login-host-b";
$ftp_user_pass="senha-host-b";
// nome do arquivo e path do host-b
$remote_file = '/public_html/path/nome-do-arquivo-remoto.jpg';
// conecta ao servidor ftp
$conn_id = ftp_connect($ftp_server);
// envia dados de acesso (login e senha)
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// envia um arquivo
if (ftp_put($conn_id, $remote_file, $file, FTP_BINARY)) {
echo "arquivo enviado com sucesso: $file\n";
exit;
} else {
echo "ocorreu um erro durante o envio: $file\n";
exit;
}
// encerra conexao
ftp_close($conn_id);
?>