3

アプリの絶対パスを取得したいのですが、以下のコードを使用しています。

String pathToSave = FacesContext.getCurrentInstance()
                .getExternalContext().getRealPath("/");

結果は次のとおりです。

/home/ronaldo/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/Odontonew/

しかし、私は次のようなものを待っています:/home/ronaldo/workspace/Odontonew/

なにが問題ですか ?

4

1 に答える 1

4

ExternalContext#getRealPath()あなたが間違って期待していたように、webappが開発された場所ではなく、webappが展開された場所への相対パスを返します。

しかし、変数名pathToSaveはもっと大きな問題を示しています。そこにファイルを保存しようとしているようです。これは、次の回答に記載されている理由から、悪い考えです: Uploaded image only available after refresh the page。簡単に言えば、代わりに固定のローカル ディスク ファイル システム パスに保存します。JBossなど、一部のサーバーでは、この手順を簡単に構成できるようにする方法が提供されていることに注意してください。

使用をやめてgetRealPath()ください。現実の世界では必要ありません。私が Java Web アプリケーションを開発した 10 年間 (これは .NET の秘密裏にServletContext#getRealPath()ある) でしたが、その方法は何の役にも立ちませんでした。その方法を完全に無視してください。

以下も参照してください。

于 2013-08-28T11:06:39.867 に答える