使用php将文件上载到两个不同的服务器?

使用php将文件上载到两个不同的服务器?,php,forms,file-upload,Php,Forms,File Upload,我想上传两个不同的文件到两个不同的服务器位于两个不同的位置 我有一个图像文件,我想上传到托管PHP脚本的服务器上,另一个视频文件,我想上传到不在同一服务器上的其他服务器上 有可能这样做吗?如果可能,有人能告诉我如何实现这一点吗?这在HTML表单中是不可能的-action属性只允许指定一个URL 您在这里有两个选择: 使用JavaScript创建两个,在中填入要提交的数据,然后在每个表单上调用.submit()。由于您提到这两个位置位于不同的服务器上,我将假定它们也位于不同的域上,因此您将在至少

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

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


有可能这样做吗?如果可能,有人能告诉我如何实现这一点吗?

这在HTML表单中是不可能的-
action
属性只允许指定一个URL

您在这里有两个选择:

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

  • 让服务器上的PHP脚本获取
    $\u POST
    数据,并将包含该信息的POST请求发送到另一台服务器。例如,这可以很容易地用PHP实现。这可以通过以下方式完成:

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

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

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


但这对用户来说并不友好

您还可以将所有文件上载到其中一台服务器,并使用php ftp库将所需文件传输到第二台服务器:

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


当然,你会在这里找到更多答案。选择你最喜欢的一个:)

谢谢你的回复……但是你能用php提供一个小例子吗。@phphunger:我提供了一个相对简单的例子来演示这一点。
<form action="http://server2/upload_server2.php" method=post ...>
</form>