2

ファイルアップロードサーブレットがあり、いくつかのファイルを次のように保存しようとしています。

try{
    File uploadedFile = new File(UPLOAD_DIRECTORY + fileName);
    File uploadedFile = new File("/"+fileName);
    item.write(uploadedFile);
}
catch (Exception e) {
    e.printStackTrace();
}

その後、次のエラーが発生します。

java.security.AccessControlException: access denied (java.io.FilePermission /untitled.html write)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)

どうすれば修正できますか?

4

1 に答える 1

2

アプリサーバーで書き込み可能にするか/(これは私には良いアイデアとは思えません)、アップロードしたファイルを別の書き込み可能な場所に保存することができます。

File uploadedFile = new File(UPLOAD_DIRECTORY + fileName);
File uploadedFile = new File("/"+fileName);

uploadedFileまた、 2回宣言しようとしているようです。UPLOAD_DIRECTORYエラーから、2行目を使用しているか/、実際に使用しているように見えます。おそらく、適切な場所を提供する必要があるだけUPLOAD_DIRECTORYですか?

Java ポリシー ファイルに関するコメントの質問に答えるには:

java.sun.comの Security and Permissionsから:

Java プラットフォーム インストール (システム) 用の 1 つのポリシー ファイルと、各ユーザー用のオプションのポリシー ファイルがあります。システム ポリシー ファイルは {java.home}/lib/security/java.policy にあり、ユーザー ポリシー ファイルは各ユーザーのホーム ディレクトリにあります。システム ポリシー ファイルとユーザー ポリシー ファイルが結合されます。したがって、たとえば、システム上のすべてのユーザーに付与される権限がほとんどないシステム ポリシー ファイルと、特定のユーザーに追加の権限を付与する個々のポリシー ファイルが存在する可能性があります。

ポリシー ファイルでのファイル システムのアクセス許可の設定については、「ファイル アクセス許可」セクションを参照してください。

また、私自身のコメントを繰り返しますが、OS のファイル システムのアクセス許可にも注意を払う必要があります。その制御は、使用している OS によって異なります。

于 2011-03-08T20:13:23.077 に答える