2 つの異なる場所にある 2 つの異なるサーバーに 2 つの異なるファイルをアップロードしたいと考えています。
PHPスクリプトがホストされているサーバーにアップロードしたい画像ファイルと、同じサーバー上にない他のサーバーにアップロードしたいビデオファイルがあります。
これを行う可能性はありますか?可能であれば、これを達成する方法を誰かに説明してもらえますか?
2 つの異なる場所にある 2 つの異なるサーバーに 2 つの異なるファイルをアップロードしたいと考えています。
PHPスクリプトがホストされているサーバーにアップロードしたい画像ファイルと、同じサーバー上にない他のサーバーにアップロードしたいビデオファイルがあります。
これを行う可能性はありますか?可能であれば、これを達成する方法を誰かに説明してもらえますか?
これは HTML フォームでは不可能です。このaction
属性で指定できる URL は 1 つだけです。
ここにはいくつかの選択肢があります。
JavaScript を使用して 2 つ<iframe>
の を作成し、送信するデータを に入力してから、各フォームを<form>
呼び出します。.submit()
2 つの場所が異なるサーバー上にあるとおっしゃっていたので、それらも異なるドメイン上にあると仮定します。そのため、フォームの少なくとも 1 つで同一オリジン ポリシーに問題が発生することになります。その理由と、かなりの数のユーザーがブラウザーで 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);
この問題を解決するには多くの方法があります。たとえば、次のようにサーバーごとに 1 つずつ、2 つのフォームを持つことができます。
<form action="http://server1/upload_server1.php" method=post ...>
</form>
と
<form action="http://server2/upload_server2.php" method=post ...>
</form>
しかし、これはユーザーフレンドリーではありません。
すべてのファイルをいずれかのサーバーにアップロードし、必要なファイルを 2 番目のサーバーに転送することもできます。たとえば、php ftp ライブラリを使用します。
http://php.net/manual/en/book.ftp.php
ただし、サーバー間でファイルを転送するために使用される時間にオーバーヘッドが生じる場合があります。
きっとあなたはここでもっと多くの答えを見つけるでしょう. あなたが一番好きなものを選んでください:)