- PR -

UNIX でファイルへのパスが消えてしまう。

1
投稿者投稿内容
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-12-07 00:28
いつもお世話になっております。
アレクです。

UNIX 上でファイルへのパスがうまく渡らない現象に遭遇しています。

フォームから、ファイルがあるディレクトリへのパスを指定して、
その指定先のファイルを、呼び出したいのですが、サーブレットで
パラメータを取得すると、"/" 以前のパスが全部消えてしまって、
ファイルを呼び出すことが出来ません。

例えば、
 
  フォームに→ /usr/local/pic/picture.jpg と入力したとすると、

  サーブレット側では、→ picture.jpg となってしまっているのです。

Internet Explorer から呼び出す時は、ちゃんとパスが渡るのですが、
UNIX から、Mozilla などで呼び出すと、パスが消えてしまいます。

色々調べてみたのですが、分かりませんでした。

どなたか、同じような状況に遭遇した方はおられないでしょうか?
まりり
ぬし
会議室デビュー日: 2001/12/05
投稿数: 329
投稿日時: 2002-12-07 10:58
せめて環境とコードの一部抜粋しないと原因なんかわからないでしょう。

サーバがUNIXで、コンテナは?
クライアントはWindowsだけです?

フォームの該当部分のコードは?
フォームからはGET?POST?
送信内容の受け取り部分のコードは?

まだいろいろありそうですけれど。
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2002-12-07 21:28
引用:

せめて環境とコードの一部抜粋しないと原因なんかわからないでしょう。



そうですよね。すみません。

サーバは TurboLinux 7 で、Apache2.0 & Tomcat4.1 と、
テスト用に、Windows 2000 & Tomcat4.1 を使用しています。

フォームのコード:
コード:
   <form action="main" method="post">
        <input type="text" name="data" size="55">
        <input type="file" name="data" size="50">
        <input type="submit" value="OK">
     </form>



main.class:
コード:
     String rdata[] = request.getParameterValues("data");

     for(int i=0; i<rdata.length; i++)
     {
          System.out.println("rdata[" + i + "] = " + rdata[i]);
     }



と、こんな感じです。

これを Windows の Tomcat に置いて、InternetExplorer 5 と Netscape 6.2
でテストすると、ちゃんとパスが消えないで表示されるのですが、
TurboLinux の Tomcat に置いて、Mozilla 1.0 から呼び出すとパスが消えてしまいます。
ちなみに、TurboLinux に置いてあっても、InternetExplorer とかだと、
ちゃんと "/" 以前のパスも表示してくれます。

これはブラウザに問題があるのでしょうか?
それとも、私のプログラムミスでしょうか?
しょむ
ぬし
会議室デビュー日: 2001/09/06
投稿数: 430
投稿日時: 2002-12-08 12:48
ブラウザの挙動の問題でしょうね。たぶん。
プロトコルアナライザや sniffer なりでパケットを覗いてみましょう。
少なくとも IE, N6 -> Linux や Moz -> Win してみりゃ、ブラウザの問題かサーバの問題かわかるでしょ?

予想ですが、HTTP ファイルアップロードの規格(RFC なんちゃら)で仕様が曖昧になっており、付けようが付けまいがどちらが正しいともいえないんでは。

# 日本語ファイル名がらみがどうとか、パス付けると secure がとか、
# いろいろありそうなので、なんとも。
# bugzilla.mozilla.org でもあたってみるとか。
1

スキルアップ/キャリアアップ(JOB@IT)