我不問有關從瀏覽器上傳文件到php腳本的問題,這裏有很多教程。我在問這個問題:用php將文件上傳到另一臺php服務器
我有一個php腳本已經接受用戶的文件,並且該文件當前位於服務器1的硬盤上。我想將文件從服務器1上傳到php服務器2上的腳本,使用常規的Http post協議,因此服務器2上的php腳本可以寫爲標準的文件上傳處理程序。
我無法在互聯網上找到任何教程,因爲他們都談論browser-> server1。有關php上傳的教程都討論了ftp,但我不想使用該協議。
請幫忙?
我不問有關從瀏覽器上傳文件到php腳本的問題,這裏有很多教程。我在問這個問題:用php將文件上傳到另一臺php服務器
我有一個php腳本已經接受用戶的文件,並且該文件當前位於服務器1的硬盤上。我想將文件從服務器1上傳到php服務器2上的腳本,使用常規的Http post協議,因此服務器2上的php腳本可以寫爲標準的文件上傳處理程序。
我無法在互聯網上找到任何教程,因爲他們都談論browser-> server1。有關php上傳的教程都討論了ftp,但我不想使用該協議。
請幫忙?
您可以使用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()
。
您可以使用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'));
?>
需要兩個腳本。
第一個腳本會模仿瀏覽器的行爲,它會把一個文件發送到秒腳本,它將像處理常規文件上傳腳本一樣處理它。
我猜你必須使用「http_post_fields」作爲第一個腳本,它似乎處理文件。 http://us2.php.net/manual/en/function.http-post-fields.php
祝你好運。
謝謝,它立即生效:-) – Tominator 2010-06-28 20:34:10
我只是需要這又一個項目,我在我的新代碼中犯了一個錯誤,這是非常微妙的,我不得不在這裏發佈它:這是非常重要的CURLOPT_POST,真當POSTFIELDS被設置爲一個數組的時候! – Tominator 2014-03-12 12:07:04