1
1
package apijson .boot ;
2
2
3
- import java .io .File ;
4
- import java .io .FileInputStream ;
5
- import java .io .FileNotFoundException ;
6
- import java .io .FileOutputStream ;
3
+ import java .io .*;
7
4
import java .util .ArrayList ;
5
+ import java .util .Arrays ;
8
6
import java .util .List ;
7
+ import java .util .Objects ;
9
8
10
9
//import javax.annotation.PostConstruct;
11
10
33
32
@ Controller
34
33
public class FileController {
35
34
36
- private static String fileUploadRootDir = null ;
35
+ public static final String HOME_DIR = System . getProperty ( "user.home" ) ;
37
36
38
- // @Value"${file.upload.root.dir.windows}")
39
- String fileUploadRootDirWindows = "C:/work/upload/" ;
37
+ private static final String WINDOWS_DIR = HOME_DIR + "\\ upload\\ " ;
40
38
41
- // @Value"${file.upload.root.dir.mac}")
42
- String fileUploadRootDirMac = "/Users/Tommy/upload/" ;
39
+ private static final String MAC_DIR = HOME_DIR + "/upload/" ;
43
40
44
- // @Value"${file.upload.root.dir.linux}")
45
- String fileUploadRootDirLinux = "~/upload/" ;
41
+ private static final String LINUX_DIR = HOME_DIR + "/upload/" ;
46
42
47
- private static List < String > fileRepository = new ArrayList <>() ;
43
+ private static String fileUploadRootDir = null ;
48
44
49
- // @PostConstruct
50
- public void initFileRepository (){
45
+ static {
51
46
// 判断文件夹是否存在,不存在就创建
52
47
String osName = System .getProperty ("os.name" );
53
48
if (osName .startsWith ("Mac OS" )) {
54
49
// 苹果
55
- fileUploadRootDir = fileUploadRootDirMac ;
50
+ fileUploadRootDir = MAC_DIR ;
56
51
} else if (osName .startsWith ("Windows" )) {
57
52
// windows
58
- fileUploadRootDir = fileUploadRootDirWindows ;
53
+ fileUploadRootDir = WINDOWS_DIR ;
59
54
} else {
60
55
// unix or linux
61
- fileUploadRootDir = fileUploadRootDirLinux ;
56
+ fileUploadRootDir = LINUX_DIR ;
62
57
}
63
58
64
59
File directories = new File (fileUploadRootDir );
@@ -73,11 +68,33 @@ public void initFileRepository(){
73
68
}
74
69
}
75
70
71
+ public static final List <String > IMG_SUFFIXES = Arrays .asList ("jpg" , "jpeg" , "png" );
72
+ private static List <String > fileNames = null ;
76
73
@ GetMapping ("/files" )
77
74
@ ResponseBody
78
75
public JSONObject files () {
76
+ File dir = new File (fileUploadRootDir );
77
+ if (fileNames == null || fileNames .isEmpty ()) {
78
+ List <String > names = new ArrayList <>();
79
+ File [] files = dir .listFiles (new FileFilter () {
80
+ @ Override
81
+ public boolean accept (File file ) {
82
+ String name = file == null ? null : file .getName ();
83
+ int ind = name == null ? -1 : name .lastIndexOf ("." );
84
+ String suffix = ind < 0 ? null : name .substring (ind + 1 );
85
+ boolean isImg = suffix != null && IMG_SUFFIXES .contains (suffix .toLowerCase ());
86
+ if (isImg ) {
87
+ names .add (name );
88
+ }
89
+ return isImg ;
90
+ }
91
+ });
92
+
93
+ fileNames = names ;
94
+ }
95
+
79
96
JSONObject res = new JSONObject ();
80
- res .put ("data" , fileRepository );
97
+ res .put ("data" , fileNames );
81
98
return new DemoParser ().extendSuccessResult (res );
82
99
}
83
100
@@ -91,7 +108,7 @@ public JSONObject upload(@RequestParam("file") MultipartFile file) {
91
108
fileOutputStream .write (file .getBytes ());
92
109
fileOutputStream .close ();
93
110
94
- fileRepository .add (file .getOriginalFilename ());
111
+ fileNames .add (file .getOriginalFilename ());
95
112
96
113
JSONObject res = new JSONObject ();
97
114
res .put ("path" , "/download/" + file .getOriginalFilename ());
0 commit comments