用php上传文件到两个不同的服务器?

时间:2012-10-05 05:19:33

标签: php forms file-upload

我想将两个不同的文件上传到位于两个不同位置的两个不同服务器。

我有一个图像文件,我想上传到托管PHP脚本的服务器上,另一个视频文件,我要上传到不在同一台服务器上的其他服务器上。

有可能这样做吗?任何人都可以解释我如何实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

使用HTML表单是不可能的 - action属性只允许指定单个URL。

您有几个选择:

  • 使用JavaScript创建两个<iframe>,在<form>中填写您要提交的数据,然后在每个表单上调用.submit()。既然你提到这两个位置在不同的服务器上,我会假设它们也在不同的域上 - 因此你会在至少一个表单上遇到同源策略的问题。出于这个原因,以及相当多的用户在浏览器中关闭了JavaScript的事实,我建议尽可能避免使用此选项。

  • 让服务器上的PHP脚本获取$_POST数据,并将包含该信息的POST请求发送到其他服务器。例如,可以使用PHP的cURL extension轻松完成此操作。这可以按如下方式完成:

    $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);
    

答案 1 :(得分:1)

有很多方法可以解决这个问题。例如,您可以有两个表单,每个服务器一个,如:

<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

但是,用于在服务器之间传输文件的时间可能会有开销。

您肯定会在这里找到更多答案。选择你最喜欢的那个:)