Kawai Wiki

Rev

Rev 171 | Rev 212 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 171 Rev 196
Line 10... Line 10...
10
import org.kawai.dao.PageDAO;
10
import org.kawai.dao.PageDAO;
11
import org.kawai.dao.UserDAO;
11
import org.kawai.dao.UserDAO;
12
import org.mentawai.core.ApplicationManager;
12
import org.mentawai.core.ApplicationManager;
13
import org.mentawai.filter.AuthenticationFree;
13
import org.mentawai.filter.AuthenticationFree;
14
14
-
 
15
/**
-
 
16
 * Action class LoginAction.
-
 
17
 *
-
 
18
 * @author Sergio Oliveira
-
 
19
 *
-
 
20
 */
15
public class FileAction extends AbstractAction implements AuthenticationFree {
21
public class FileAction extends AbstractAction implements AuthenticationFree {
16
       
-
 
-
 
22
17
        private static final String UPLOAD_DIR = "uploads";
23
        private static final String UPLOAD_DIR = "uploads";
18
       
-
 
-
 
24
19
        public FileAction(UserDAO userDAO, PageDAO pageDAO) {
25
        public FileAction(UserDAO userDAO, PageDAO pageDAO) {
20
                super(userDAO, pageDAO);
26
                super(userDAO, pageDAO);
21
        }
27
        }
22
       
-
 
-
 
28
23
        @Override
29
        @Override
24
        public boolean bypassAuthentication(String method) {
30
        public boolean bypassAuthentication(String method) {
25
                if (method != null && method.equals("upload")) return false;
31
                if (method != null && method.equals("upload")) return false;
26
                return false;
32
                return false;
27
        }
33
        }
28
       
-
 
-
 
34
29
        private String getFolderFromName(String name) {
35
        private String getFolderFromName(String name) {
30
                name = name.toLowerCase();
36
                name = name.toLowerCase();
31
                if (name.endsWith(".jpg") || name.endsWith(".gif") || name.endsWith(".jpeg") || name.endsWith(".png")) {
37
                if (name.endsWith(".jpg") || name.endsWith(".gif") || name.endsWith(".jpeg") || name.endsWith(".png")) {
32
                        return "images";
38
                        return "images";
33
                }
39
                }
34
                if (name.endsWith(".jar") || name.endsWith(".zip") || name.endsWith(".tar") || name.endsWith(".gz") || name.endsWith(".bzip") || name.endsWith(".war")) {
40
                if (name.endsWith(".jar") || name.endsWith(".zip") || name.endsWith(".tar") || name.endsWith(".gz") || name.endsWith(".bzip") || name.endsWith(".war")) {
35
                        return "archive";
41
                        return "archive";
36
                }
42
                }
37
                return "others";
43
                return "others";
38
        }
44
        }
39
       
-
 
-
 
45
40
        public String upload() {
46
        public String upload() {
41
               
-
 
-
 
47
42
                FileItem fileItem = (FileItem) input.getValue("Filedata");
48
                FileItem fileItem = (FileItem) input.getValue("Filedata");
43
               
-
 
-
 
49
44
                if (fileItem != null) {
50
                if (fileItem != null) {
45
                       
-
 
-
 
51
46
                        String filename = fileItem.getName();
52
                        String filename = fileItem.getName();
47
                        String folder = getFolderFromName(filename);
53
                        String folder = getFolderFromName(filename);
48
                        String dir = ApplicationManager.getRealPath() + File.separator + UPLOAD_DIR + File.separator + folder + File.separator;
54
                        String dir = ApplicationManager.getRealPath() + File.separator + UPLOAD_DIR + File.separator + folder + File.separator;
49
                       
-
 
-
 
55
50
                        File file = new File(dir + filename);
56
                        File file = new File(dir + filename);
51
                        if (file.exists()) {
57
                        if (file.exists()) {
52
                                output.setValue("status", "error");
58
                                output.setValue("status", "error");
53
                                output.setValue("msg", "File already exists: " + filename);
59
                                output.setValue("msg", "File already exists: " + filename);
54
                                return AJAX;
60
                                return AJAX;
55
                        }
61
                        }
56
                       
-
 
-
 
62
57
                        try {
63
                        try {
58
                               
-
 
-
 
64
59
                                FileOutputStream fos = new FileOutputStream(file);
65
                                FileOutputStream fos = new FileOutputStream(file);
60
                               
-
 
-
 
66
61
                                InputStream is = fileItem.getInputStream();
67
                                InputStream is = fileItem.getInputStream();
62
                                byte[] data = new byte[4096];
68
                                byte[] data = new byte[4096];
63
                                int read;
69
                                int read;
64
                                while((read = is.read(data)) != -1) {
70
                                while((read = is.read(data)) != -1) {
65
                                        fos.write(data, 0, read);
71
                                        fos.write(data, 0, read);
66
                                }
72
                                }
67
                                is.close();
73
                                is.close();
68
                                fos.close();
74
                                fos.close();
69
                               
-
 
-
 
75
70
                                output.setValue("status", "success");
76
                                output.setValue("status", "success");
71
                                output.setValue("msg", "File uploaded to folder <i>" + folder + "</i>: " + filename);
77
                                output.setValue("msg", "File uploaded to folder <i>" + folder + "</i>: " + filename);
72
                               
-
 
-
 
78
73
                                return AJAX;
79
                                return AJAX;
74
                               
-
 
-
 
80
75
                        } catch(Exception e) {
81
                        } catch(Exception e) {
76
                                e.printStackTrace();
82
                                e.printStackTrace();
77
                                output.setValue("status", "error");
83
                                output.setValue("status", "error");
78
                                output.setValue("msg", "Error saving file: " + filename);
84
                                output.setValue("msg", "Error saving file: " + filename);
79
                                return AJAX;
85
                                return AJAX;
80
                        }
86
                        }
81
                       
-
 
-
 
87
82
                } else {
88
                } else {
83
                        output.setValue("status", "error");
89
                        output.setValue("status", "error");
84
                        output.setValue("msg", "Error uploading file!");
90
                        output.setValue("msg", "Error uploading file!");
85
                        return AJAX;
91
                        return AJAX;
86
                }
92
                }
87
        }
93
        }
88
       
-
 
-
 
94
89
        public String listFiles() {
95
        public String listFiles() {
90
               
-
 
-
 
96
91
                File[] images = (new File(ApplicationManager.getRealPath() + File.separator + "uploads" + File.separator + "images")).listFiles();
97
                File[] images = (new File(ApplicationManager.getRealPath() + File.separator + "uploads" + File.separator + "images")).listFiles();
92
                File[] archive = (new File(ApplicationManager.getRealPath() + File.separator + "uploads" + File.separator + "archive")).listFiles();
98
                File[] archive = (new File(ApplicationManager.getRealPath() + File.separator + "uploads" + File.separator + "archive")).listFiles();
93
                File[] others = (new File(ApplicationManager.getRealPath() + File.separator + "uploads" + File.separator + "others")).listFiles();
99
                File[] others = (new File(ApplicationManager.getRealPath() + File.separator + "uploads" + File.separator + "others")).listFiles();
94
               
-
 
-
 
100
95
                Set<String> files = new TreeSet<String>();
101
                Set<String> files = new TreeSet<String>();
96
                if (images != null) for(File f : images) {
102
                if (images != null) for(File f : images) {
97
                        if (f.isHidden()) continue;
103
                        if (f.isHidden()) continue;
98
                        files.add("/uploads/images/" + f.getName());
104
                        files.add("/uploads/images/" + f.getName());
99
                }
105
                }
Line 103... Line 109...
103
                }
109
                }
104
                if (others != null) for(File f : others) {
110
                if (others != null) for(File f : others) {
105
                        if (f.isHidden()) continue;
111
                        if (f.isHidden()) continue;
106
                        files.add("/uploads/others/" + f.getName());
112
                        files.add("/uploads/others/" + f.getName());
107
                }
113
                }
108
               
-
 
-
 
114
109
                output.setValue("files", files);
115
                output.setValue("files", files);
110
                return AJAX;
116
                return AJAX;
111
        }
117
        }
112
}
118
}