0

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

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

有没有可能这样做?如果可能的话,谁能解释我如何实现这一目标?

4

2 回答 2

1

这对于 HTML 表单是不可能的 - 该action属性只允许指定单个 URL。

您在这里有几个选择:

  • 使用 JavaScript 创建两个<iframe>s,在其中填充您要提交的数据<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);
    
于 2012-10-05T05:22:52.920 回答
1

有很多方法可以解决这个问题。例如,您可以有 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

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

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

于 2012-10-05T05:26:35.857 回答