- ベストアンサー
画像のアップロード
現在画像のアップロードをし、同時に画像名と画像の説明文を登録するフォームを作っています。 ****************************************************** 画像名、説明文→AサーバーのDB(PHPファイルと同じサーバー) 画像ファイル→Bサーバーの画像格納フォルダ ****************************************************** 上記のように別々のサーバーに登録したいのですがどのように実現したらよいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
サーバが違うという事はスクリプトを複雑にします。 不可能じゃないけど、それほど簡単じゃ無いと思います。 いくつか条件があると思います。 BサーバはPHPが動くのですか? BサーバからAサーバへDB接続は出来ますか? この辺が問題なければ比較的シンプルに出来ると思います。 この場合は、Aサーバのスクリプトから直接Bサーバへアップロードさせ、その画像名や説明文をAサーバへDB接続して登録すれば良いと思います。必要とあれば、処理終了後、Aサーバにリダイレクトすれば良いです。 DB接続が出来ない場合は、Bサーバへの画像アップロード後、フォームデータをAサーバへリダイレクトして、Aサーバで登録します。リダイレクトするときのURLにデータを入れるときは、例えば $fname = "test.jpg"; $setsumei = "説明はこちら"; というフォームが来たら、$fname,$setsumei をurlencodeして、 header("Location: http://A-server.url.com/insert.php?fname={$fname}&setsumei={$setsumei}"); としてAに渡せばいいと思います。 さて、BサーバではPHPが動かない場合には、工夫をする必要があります。 Aサーバでアップロードされた画像ファイルを例えばftp関数でBサーバに転送してやる、という方法が考えられます。当然、大きなファイルになるとユーザからのアップロードと、サーバ間のアップロードの2重のトラフィックが発生します。また、多少タイムラグが発生する可能性もあるでしょう。 PHPからのFTP接続に関してはリファレンスマニュアルのftp関数のところを見ればそう難しくないと思います。 http://jp2.php.net/ftp
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
DBへの登録はDBのコネクトさえ確保できるなら いけるはずなので、特に別サーバーでもいけるのでは? 画像を別サーバーに移すのはmove_uploaded_file() ではできないので、コマンドラインのncftpputなど をsystem系の関数で実行して、移動するというのが 単純でよいかもしれませんね
お礼
早速の回答ありがとうございます。 ncftpとはFTPクライアントのことでしょうか?
お礼
回答ありがとうございます。 BサーバーでもPHPは使用可能です。 BサーバからAサーバへDB接続も可能です。 こんな簡単にできるとは・・・ 少し難しく考えすぎてました。 お二方とも本当にありがとうございました。