2011-08-05 4 views
0

イメージホストを開発していて、画像を別のサーバー、たとえばhttp://mysite.com/uploadsの代わりにhttp://i1.mysite.comにアップロードしたいとします。しかし、私はそれをする方法を考え出すことにいくつかの問題を抱えています。複数のサーバーで画像をホストする

が、私はこのフォームを持っていると言う:

私はファイルを検証し、それを保存することができます /uploadに画像ファイルを送信します
<form action="http://mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data"> 
    <input type="file" name="image" id="file_upload" /> 
    <input type="submit" value="Upload" id="upload_submit" /> 
</form> 

が、ウェブサイトがホストされているとそれが同じサーバー上になり、専用のストレージ・サーバーではありません。ウェブサイトと同じサーバーにアップロードされた画像を持たないで、私が望むものを達成するにはどうすればいいですか?

私はいつも何ができる:別のサーバーに画像ファイルを送信することになる

<form action="http://i1.mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data"> 
    <input type="file" name="image" id="file_upload" /> 
    <input type="submit" value="Upload" id="upload_submit" /> 
</form> 

が、画像のアップロードが完了したとき、私はhttp:/i1.mysite.com/uploadにリダイレクトすることでしょう。

誰でもこれに関する経験があり、行動訴訟を推奨できますか?ありがとうございました!

答えて

1

イメージサーバーにアップロードしないでください。このようなコンテンツ固有のサーバーは、コンテンツを提供するために最適化され、消費するコンテンツに対処する必要はありません。

アップロードフォームをメインサイトのサーバーに送信します。その後、他のプロトコルを使用してアップロードしたファイルをイメージサーバに転送することができます。 rsynch、scp、etc ...このようにして、あなたはあなたの "制御"コードをすべて一つの場所に持っていて、データベースと複数のサーバーの間の相互の同期について心配する必要はありません。画像サーバは受動的に画像データを吐き出すだけです。

0

これらの2つのアイデアをデカップリングすることをおすすめします。まず、イメージをサーバーにアップロードし、別のプロセス(おそらくスケジュールされたcron)でイメージを別のサーバーに移動します。おそらく、2つのアップロードが完了するのをユーザーが待つことは望ましくありません。

0

他の人が言っているように、あなたがしようとしていることは最適ではありません。本当にこれを続行したい場合は、フォームをPHPスクリプトに提出し、それを処理して必要な場所にファイルを配置し、必要な情報をデータベースに保存することをお勧めします。あるサーバーから別のサーバーへのデータ転送に最適なプロトコルを評価する必要があります。おそらく、あなたはおよそherehereなどcurl docs

+0

私は、すべてをPHPスクリプトに提出するフォームを1つ作成し、すべてを分割することを追加する必要があります。 – user1934587390

0

あなたのイメージホストに画像をアップロードすることができ学ぶことができカールを、使用して終了、それは後で戻ってあなたのウェブサイトにリダイレクトしています。これを行う1つの方法は、フォームに隠された「成功」と「失敗」のURL入力を追加することです:

<form action="http://i1.mysite.com/upload" method="post" accept-charset="utf-8" enctype="multipart/form-data"> 
    <input type="file" name="image" id="file_upload" /> 
    <input type="submit" value="Upload" id="upload_submit" /> 
    <input type="hidden" name="success" value="http://mysite.com/success" /> 
    <input type="hidden" name="failure" value="http://mysite.com/failure" /> 
</form> 

自分のイメージホスト上のアップロードスクリプトはその後、アップロードが成功した後、指定されたURLにリダイレクトします:

<?php 
    .. handle uploaded file .. 

    if ($success) { 
     header ('Location: ' . $_REQUEST ['success']) ; 
    } 
    else { 
     header ('Location: ' . $_REQUEST ['error'] . '?message=' . $message) ; 
    } 

?> 
関連する問題