WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:cgiからFTPサーバを表示

0:[投稿] 十夜 [MAIL] [2002/03/12 15:53 ][環境:WIN+IE WIN系+OTHER]

 はじめて質問します。十夜といいます。

 cgiにてFTPサーバマシン上にディレクトリを作成後、そのディレクトリをanonymous FTPとしてブラウザで表示、ブラウザ上でのdrag&dropにてデータファイルのupload,downloadを行うというシステムを作ろうとしています。
 ディレクトリを作成してそのディレクトリをブラウザで表示することはできるのですが、drag&dropでデータファイルのupload,downloadをしようとするとうまくいきません。調べてみると、FTPサーバが表示されているのではなくて、HTML記述されたFTPサーバのLogin画面(?)が表示されているようです。

 どのようにすれば、cgiでFTPサーバをそのままブラウザに表示させることができるのでしょうか?

 現状では次のようにしてFTPサーバ上のディレクトリを表示しています。(言語はC言語です)

 printf("Location: ftp://%s/%s";,FtpServerName,DirectoryName) ;

    ※FtpServerName:FTPサーバ名
     DirectoryName:表示したいディレクトリ名

 ちなみに、サーバのOSはWeb,FTPともにWIN NT、FTPサーバソフトはCesarFTP、ブラウザはIE5.5です。(イントラネット内のサーバです)

 なにかヒントになるようなことでもよいので、ご回答よろしくおねがいします。


1:[回答] えび [2002/03/12 16:34 ]

 状況と目標がいまひとつ分かりませんが、

Location: ftp://foo.com/bar/

 を出力しているなら、単にブラウザの URL 窓に ftp://foo.com/bar/ と打ち込んだのと同じ状況になるはずです。

 ftp://foo.com/bar/ に直接アクセスして状況を確認してください。anonymous でログインできるなら、ディレクトリ /bar/ の内容が表示されることが期待できます。そうならないのであれば、そもそもanonymousログイン出来ないか、ブラウザ側の FTP の設定が変なのでしょう。


2:[回答] 十夜 [MAIL] [2002/03/12 17:44 ]

回答ありがとうございます。

>状況と目標がいまひとつ分かりませんが、

 目標(目的)は、クライアントPCにあるデータファイルをサーバ側にあるアプリケーションによって処理するために、サーバにアップロードしたい、ということです。アップロードの手段としてdrag&dropを選んだのは一度に複数のファイルをアップロードする必要があるためと、ユーザインタフェースのためです(クライアント側のユーザがPCに明るくないため)。drag&dropでファイルをアップロードするために、FTPサーバにアクセスして表示したいのですが、アップロード先のディレクトリは表示する直前に新規で作成します。そのためにcgiでディレクトリの作成とFTPサーバへのアクセス/表示をしたい、ということです。判りにくくてすみません。

>Location: ftp://foo.com/bar/
>
> を出力しているなら、単にブラウザの URL 窓に ftp://foo.com/bar/ と打ち込んだのと同じ状況になるはずです

 これが同じ状況にならないのです。cgiで行っていることは、新しくdirを生成した後「Location: ftp://ftpserver/dir/」を出力しているだけです。実行結果は、FTPのログインメッセージとディレクトリの内容のリストが表示されます。URL窓に直接打ち込んだ場合は、ディレクトリ内容が表示されます。

> ftp://foo.com/bar/ に直接アクセスして状況を確認してください。

 「ftp://foo.com/bar/」にアクセスしてみたところ、IPアドレスが見つからないとのことでした。

>そうならないのであれば、そもそもanonymousログイン出来ないか、 ブラウザ側の FTP の設定が変なのでしょう。

 ブラウザの設定をみたところ、「FTPサイト用のフォルダビューを使用する」の設定になっていました。この設定をはずして、URL窓に直接アドレスを打ち込んだところ、cgiで「Location: ftp://」出力した場合と同じ画面出力になりました。ところが、この画面ですと、drag&dropによるファイルのアップロード/ダウンロードができません。「FTPサイト用のフォルダビューを使用する」設定をオンにすると、エクスプローラでフォルダ表示をした時と同じ表示(アイコン表示)になり、drag&dropが可能になります。この後者の状況を、cgiでLocation出力した場合にも実現したいのです。
 なにかいい方法はありませんか?


3:[回答] TOM neko [2002/03/12 19:49 ]

Locationを使わないでJavascriptで飛ばしたらどうなります?


4:[回答] 十夜 [MAIL] [2002/03/13 10:50 ]

 TOM nekoさん、回答ありがとうございます。

 Javascriptで飛ばしたら、できますね。ちゃんとdrag&dropできる画面になりました。
 となると、画面を表示するのはJavascriptを利用すればいいとして、その前にcgiでディレクトリを作成しなければいけないんですけれど、C言語のcgiからJavascriptを呼び出すというのは可能なんでしょうか?出来ないとすれば、Perlのcgiからは呼び出せますか?(すみません、Perlはやったことないので)


5:[回答] TOM neko [2002/03/13 11:38 ]

CGIで仮のページを書き出して、そのページのbodyのonLoadで飛ばすのが自然だと思います。Javascriptオフの人向けにリンクもあれば親切ですし。

Locationとは違って、ユーザが気が付かないうちに切り替えるのは無理ってことですね。


6:[回答] lol [2002/03/13 12:13 ]

<META HTTP-EQUIV="Refresh" CONTENT="0;URL=〜">
とかはどう?


7:[完了] 十夜 [MAIL] [2002/03/13 13:21 ]

TOM nekoさん、lolさん、回答ありがとうございます。

><META HTTP-EQUIV="Refresh" CONTENT="0;URL=?">
>とかはどう?

 これだと"Location: ftp://?";で飛ばしたときと同じになってしまいました。

>CGIで仮のページを書き出して、そのページのbodyのonLoadで飛ばすのが自然だと思います。

 仮のページを書き出して、そのページをwindow.locationで飛ばしてみたところ、"Location: ftp?"で飛ばしたときと同じ現象になってしまいました。前回Javascriptではうまくいったと書きましたが、そのときはwindow.openを使っていました。新規画面を出すときはOK、画面を書き換える場合はNG、ということのようです。
 なので、cgiで一度現在の画面内容にwindow.openのスクリプトとbody onLoadを追加したものを出力して、新規画面でFTPサーバを表示する形で試してみようと思います。

>Javascriptオフの人 向けにリンクもあれば親切ですし。

 そうですね。今回はイントラネット内での業務用なのでJavascriptオンが前提なんですが、同様のことを一般向けでやるようなことがあれば、考慮したいと思います。

 ご助力ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World