0

Tomcat7 には、次のようなコンテキストからエイリアスを使用するオプションがあります。

 <Context aliases="/up=/var/tomcat/upload"></Context>

これにより、webapp の外部からファイルにアクセスできます。今、私はJavaコードからこのディレクトリに読み書きしたいのですが、方法がわかりません。

私がすることができます:

servletContext.getResourcePaths("/up/")

/var/tomcat/upload の内容が表示されます。

このディレクトリに書き込むにはどうすればよいですか?

例外的な答えで私がしたこと:これをcontext.xmlに追加します:

<Context aliases="/up=/var/tomcat/upload">
     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow=".*" />
     <Parameter name="uploadDir" value="/var/tomcat/upload"/>

そしてこれは私のJavaコードで:

String uploadDir = servletContext.getInitParameter("uploadDir") + subDir;
OutputStream bos = new FileOutputStream(uploadDir + fileName);

これは機能しますが、パラメーターのみを使用してエイリアスをスキップできます。これは、Java では役に立たないためです。したがって、エイリアスの背後にある考え方がよくわかりません。このディレクトリとコンテンツを再デプロイすると上書きされないため、ファイルのアップロード用だと思いました。ただし、Java が追加のパラメーターを使用してのみアクセスできる場合は、webapp 内 (war 内) にある可能性のある静的コンテンツを提供するためにのみ使用できます。

4

1 に答える 1

1

Java コードにアップロード フォルダー ( /var/tomcat/upload) へのパスを個別に伝えて、そこでファイルを読み書きできるようにします。

例:

<Context aliases="/up=/var/tomcat/upload">
    <Parameter name="uploadDir" value="/var/tomcat/upload"/>
</Context>

Java コードは、 を呼び出すことでパラメータ値を取得できますServletContext.getInitParameter("uploadDir")

于 2016-11-22T21:10:17.413 に答える