-
Type:
Improvement
-
Resolution: Fixed
-
Priority:
Major
-
None
-
Affects Version/s: 1.0.4-sp8
-
Component/s: SAStruts
-
None
commons-fileupload 1.2 と 1.2.1 でアップロード時にできた場合の添付ファイルの扱いが変更されています。commons-fileupload 1.2.1 においてアップロードファイルを削除対象にするには、 S2MultipartRequestHandler で FileCleaningTracker を DiskFileItemFactory にセットする必要があるようです。
@@ -78,9 +80,12 @@
throws ServletException {
ModuleConfig ac = (ModuleConfig) request
.getAttribute(Globals.MODULE_KEY);
- ServletFileUpload upload = new ServletFileUpload(
- new DiskFileItemFactory((int) getSizeThreshold(ac), new File(
- getRepositoryPath(ac))));
+ FileCleaningTracker fileCleaningTracker = FileCleanerCleanup
+ .getFileCleaningTracker(ServletContextUtil.getServletContext());
+ DiskFileItemFactory fileItemFactory = new DiskFileItemFactory(
+ (int) getSizeThreshold(ac), new File(getRepositoryPath(ac)));
+ fileItemFactory.setFileCleaningTracker(fileCleaningTracker);
+ ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
upload.setHeaderEncoding(request.getCharacterEncoding());
upload.setSizeMax(getSizeMax(ac));
elementsText = new Hashtable();
ただ、SAStrutsのSVNを見ても .classpash は 1.2 を参照し、pom.xml は 1.2.1 を参照したりという状況なので、1.2 を使われているウェブアプリプロジェクトもあるかと思うので、上記の変更を入れたら SAStrutsと共に commons-fileupload も変更してもらうような注意が必要なるかと思います(1.2.1に依存するコードなため)。
参考
http://commons.apache.org/fileupload/using.html#Resource%20cleanup