-1

閲覧したファイルのパスを取得したい。好きにしてみた

Object objUploadEvent = ctx.getTriggerEvent();
        if (objUploadEvent != null && (objUploadEvent instanceof UploadEvent)) {
            upEvent = (UploadEvent) objUploadEvent;
        }
        if (upEvent != null) {
            Media media = upEvent.getMedia();
            File file=new File(media.getName());
            this.path = file.getAbsolutePath();
        }

しかし、getAbsolutePath は Eclipse からのパスを提供しています。私のファイルが c://doc/abc にある場合、パスは c://doc/abc/myfile.txt として指定する必要があります

ありがとう

4

3 に答える 3

0

私が正しく理解していれば、サーバー上のファイルの場所ではなく、クライアント上のソースファイルの場所が必要ですか?

申し訳ありませんが、セキュリティ上の理由からこれは不可能です。

これについては、StackOverflowやその他の場所で多くの議論があります(このセキュリティ機能の一部のブラウザの実装の「偽のパス」症状に関連する場合があります。

詳細に立ち入ることなく、このセキュリティ機能の理由は非常に単純です。Webサイトは、ユーザーのファイルシステムについて何かを知る必要はありません(読むことができます)。そのため、ファイルをサーバーにアップロードする場合は、ファイルデータのみを送信する必要があります。

技術的には、一部の古いブラウザ(IE6など)では可能でしたが、現時点ではかなりユビキタスなセキュリティ機能であり、この情報に依存するのは運命が悪いでしょう。

于 2013-01-15T11:05:44.690 に答える
0

をログに出力media.getName()すると、ほとんどの場合、ファイル名だけでパスが表示されていないことがわかります。myfile.txt

これは、アップロードされたバイトと共に送信されるファイルに関する情報の量がブラウザーに依存するためです。また、ほとんどのブラウザは、パスなしで名前を提供するだけです。オペラを試してみてください。完全なファイルパスを取得する必要があります。

于 2013-01-15T06:21:10.923 に答える
0

ファイルがクライアント (ブラウザがある場所) にある場合、これはおそらく通常のファイル アップローダーでは不可能です。この質問には、あなたが直面しているのとまったく同じ問題を解決するいくつかの選択肢があります

ファイルがサーバー上にある場合は、 を試してくださいfile.getCanonicalPath()。これにより、パス全体が得られるはずです。

また参照してください: Java の getPath()、getAbsolutePath()、および getCanonicalPath() の違いは何ですか?

ところで、あなたのプログラムが開始されたディレクトリ、eclipse ディレクトリは、 を使用して取得できますSystem.getProperty("user.dir"))。ただし、ファイルへのパスだけが必要な場合は、これを使用することはお勧めしません。

于 2013-01-15T06:16:16.030 に答える