簡體   English   中英

用php上傳文件到兩個不同的服務器?

[英]File uploading with php to two different servers?

我想將兩個不同的文件上傳到位於兩個不同位置的兩個不同的服務器。

我有一個圖像文件,我想上傳到托管PHP腳本的服務器上,另一個視頻文件,我要上傳到不在同一台服務器上的其他服務器上。

這樣做有可能嗎? 任何人都可以解釋我如何實現這個目標嗎?

對於HTML表單,這是不可能的 - action屬性僅允許指定單個URL。

你有兩個選擇:

  • 使用JavaScript創建兩個<iframe> ,在<form>填入要提交的數據,然后在每個表單上調用.submit() 既然你提到這兩個位置在不同的服務器上,我會假設它們也在不同的域上 - 因此你會在至少一個表單上遇到同源策略的問題。 出於這個原因,以及很多用戶在瀏覽器中關閉JavaScript的事實,我建議盡可能避免使用此選項。

  • 讓服務器上的PHP腳本獲取$_POST數據,並將包含該信息的POST請求發送到其他服務器。 例如,這可以通過PHP的cURL擴展輕松完成。 這可以按如下方式完成:

     $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://...'); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST)); curl_exec($ch); curl_close($ch); 

有很多方法可以解決這個問題。 例如,您可以有2個表單,每個服務器一個,如:

<form action="http://server1/upload_server1.php" method=post ...>
</form>

<form action="http://server2/upload_server2.php" method=post ...>
</form>

但這不是用戶友好的。

您還可以將所有文件上傳到其中一個服務器,並使用例如php ftp庫將您想要的文件傳輸到第二台服務器:

http://php.net/manual/en/book.ftp.php

但是,用於在服務器之間傳輸文件的時間可能會有開銷。

肯定會在這里找到更多答案。 選擇你最喜歡的:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM