0

2 つの異なる場所にある 2 つの異なるサーバーに 2 つの異なるファイルをアップロードしたいと考えています。

PHPスクリプトがホストされているサーバーにアップロードしたい画像ファイルと、同じサーバー上にない他のサーバーにアップロードしたいビデオファイルがあります。

これを行う可能性はありますか?可能であれば、これを達成する方法を誰かに説明してもらえますか?

4

2 に答える 2

1

これは 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);
    
于 2012-10-05T05:22:52.920 に答える
1

この問題を解決するには多くの方法があります。たとえば、次のようにサーバーごとに 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

ただし、サーバー間でファイルを転送するために使用される時間にオーバーヘッドが生じる場合があります。

きっとあなたはここでもっと多くの答えを見つけるでしょう. あなたが一番好きなものを選んでください:)

于 2012-10-05T05:26:35.857 に答える