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

Tom*_*tor 23 php

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

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

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

请帮忙?

Dan*_*erg 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);
Run Code Online (Sandbox Code Playgroud)

然后,您可以将server2部件作为常规文件上载来处理.有关curl_setopt()这些选项的更多信息,请参阅.

  • 我只是在另一个项目中再次需要这个,我在我的新代码中犯了一个非常微妙的错误,我不得不在这里发布它:当 CURLOPT_POST,true 设置为数组时,它在 POSTFIELDS 之前是非常重要的! (2认同)

bku*_*lyk 9

您可以使用SOAP将文件从一个服务器发送到另一个服务器.

接收服务器:

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

发送服务器:

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

  • 我几年前写的,我还是很新的.现在我惊恐地发抖,我建议这样做.使用接受的答案. (4认同)