Вы можете использовать этот скрипт для генерации POST-запроса с загрузкой файла (используйте Content-Type: multipart/form-data
) на стороне сервера.
На принимающем сервере вы можете использовать другой скрипт для загрузки файла через запрос POST.
Но не забывайте, что загрузка файлов, как правило, является слабым местом в безопасности веб-приложений, поэтому прочитайте этот pdf перед применением кода на рабочем сервере.
ОБНОВЛЕНИЕ:
Подумав минуту, я понял, что простая функция php copy также является хорошим решением для передачи файла с одного сервера на другой! Это будет работать, если использование запроса POST не является обязательным для вас.
У этого подхода есть два преимущества:
1) Это проще
2) Передача файла может быть выполнена после отправки запроса, асинхронно загружая файл
3) Может быть реализовано, если переданный файл генерируется динамически
4) Сервер может запросить файл еще раз, если не удается установить соединение
<?php
//you can run this code in a separate process
//don't forget to urlencode the file name if it's not encoded yet
$remote = urlencode( $_POST['filename'] );
$local = "tempdir_outside_your_http_root/local_file.dat";
if(!copy($remote, $local)){
throw ....
}
if(check_for_security($local)){
//if all is ok, move to the desired folder
$final = "uploads/safe_file.dat";
rename($local, $final);
}else{
unlink($local);
}
//PS: this code is an example, it has strong security vulnerabilities
//use single-use tokens so that $_POST['filename'] could not be faked
?>