Полагаю, самый простой способ - это загрузить в локальный файл, как вы делаете.Как только файл загружен, вы должны добавить sime Net :: FTP код, чтобы отправить файл с веб-сервера на ваш FTP-сервер.Ваш поставщик услуг должен будет разрешить исходящий FTP, чтобы это работало.
use Net::FTP;
...
close UPLOADFILE;
my $ftp = Net::FTP->new( $your_ftp ) || die "$@";
$ftp->login($ftp_user,$ftp_pswd) || die $ftp->message;
$ftp->cwd($ftp_dir) || die $ftp->message;
$ftp->binary();
$ftp->pasv(); # optional. May be required
$ftp->put("$upload_dir/$filename",$filename) || die $ftp->message;
undef $ftp;
...
Кстати, я обычно использую автоматически генерируемое локальное имя файла, чтобы гарантировать, что два пользователя загружают одновременно с одним и тем же именем, невызвать проблемы.Я обычно использую что-то вроде time().'-'.$$