-
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