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

时间:2010-06-28 20:11:52

标签: php

我不是要求将文件从浏览器上传到php脚本,有很多关于这方面的教程。我在问这个问题:

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

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

请帮帮忙?

3 个答案:

答案 0 :(得分:30)

您可以使用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()

答案 1 :(得分:9)

您可以使用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' ) );
?>

答案 2 :(得分:2)

你需要两个脚本。

第一个将模拟浏览器行为的脚本,它将获取一个文件并将其发送到秒脚本,它将像常规文件上载脚本一样处理它。

我猜你必须使用“http_post_fields”作为第一个脚本,它似乎处理文件。 http://us2.php.net/manual/en/function.http-post-fields.php

祝你好运。