使用 php 将文件上传到另一个 php 服务器

php
2022-08-30 18:24:08

我不是在问如何将文件从浏览器上传到php脚本,已经有很多关于此的教程。我问这个:

我有一个php脚本,它已接受来自用户的文件,并且该文件当前位于服务器1的硬盘上。我想使用常规的 Http post 协议将文件从服务器 1 上传到服务器 2 上的 php 脚本,因此服务器 2 上的 php 脚本可以编写为标准文件上传处理程序。

我在互联网上找不到任何教程,因为他们都在谈论浏览器>服务器1。关于php上传的教程都在谈论ftp,但我不想使用该协议。

请帮忙?


答案 1

您可以使用 CURL 来实现此目的。像这样的事情应该这样做。

$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('file' => '@/path/to/file.txt'));
curl_setopt($ch, CURLOPT_URL, 'http://server2/upload.php');
curl_exec($ch);
curl_close($ch);

然后,您可以将 server2 部分作为常规文件上传进行处理。有关这些选项的详细信息,请参阅 curl_setopt()。


答案 2

可以使用 SOAP 将文件从一台服务器发送到另一台服务器。

接收服务器:

<?php
$server = new Soap_Server( null, array('uri'=>'somerui') );
$server->addFunction( 'receiveFile' );
function receiveFile( $file ) {
   file_put_contents( 'somepath', base64_decode( $file ) );
}
?>

发送服务器:

<?php
$client = new Soap_Client( null, array('uri'=>'somerui') );
$client->receiveFile( base64_encode( file_get_contents( 'somepath' ) );
?>

推荐