[SASTRUTS-128] commons-fileupload 1.2.1 のFileCleanerCleanupへの対応 Created: 2010-09-08  Updated: 2010-09-08  Resolved: 2010-09-08

Status: Resolved
Project: SAStruts
Component/s: SAStruts
Affects Version/s: 1.0.4-sp8
Fix Version/s: None

Type: Improvement Priority: Major
Reporter: shinsuke Assignee: higa
Resolution: Fixed Votes: 0
Labels: None


 Description   

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



 Comments   
Comment by higa [ 2010-09-08 ]

pom.xmlのcommons-fileuploadのバージョンを1.2に変更しました

Comment by shinsuke [ 2010-09-08 ]

特に上げなければならないという理由はありません。SAStruts の pom.xml が 1.2.1 を参照しています。SAStruts として 1.2 を利用するというのであれば、pom.xml の依存関係を修正する感じに、この課題を変更していただければと思います。

Comment by higa [ 2010-09-08 ]

SAStrutsではStruts1.2.9にあわせて、commons-fileupload 1.2を使っていますが1.2.1に上げる理由は何ですか?

Generated at Fri Mar 29 11:16:51 JST 2024 using Jira 9.13.0#9130001-sha1:94297e63fec900085df7b42441d17146fe025bb5.