我不是要求将文件从浏览器上传到php脚本,有很多关于这方面的教程。我在问这个问题:
我有一个PHP脚本已经接受了用户的文件,该文件当前位于服务器1的硬盘上。我想使用常规服务器将文件从服务器1上传到服务器2上的php脚本Http post协议,因此服务器2上的php脚本可以写成标准的文件上传处理程序。
我在互联网上找不到任何教程,因为他们都谈论浏览器 - > server1。关于php上传的教程都讨论了ftp,但我不想使用该协议。
请帮帮忙?
答案 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
祝你好运。