我想将两个不同的文件上传到位于两个不同位置的两个不同服务器。
我有一个图像文件,我想上传到托管PHP脚本的服务器上,另一个视频文件,我要上传到不在同一台服务器上的其他服务器上。
有可能这样做吗?任何人都可以解释我如何实现这个目标吗?
答案 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
但是,用于在服务器之间传输文件的时间可能会有开销。
您肯定会在这里找到更多答案。选择你最喜欢的那个:)