11package apijson .boot ;
22
3- import java .io .File ;
4- import java .io .FileInputStream ;
5- import java .io .FileNotFoundException ;
6- import java .io .FileOutputStream ;
3+ import java .io .*;
74import java .util .ArrayList ;
5+ import java .util .Arrays ;
86import java .util .List ;
7+ import java .util .Objects ;
98
109//import javax.annotation.PostConstruct;
1110
3332@ Controller
3433public class FileController {
3534
36- private static String fileUploadRootDir = null ;
35+ public static final String HOME_DIR = System . getProperty ( "user.home" ) ;
3736
38- // @Value"${file.upload.root.dir.windows}")
39- String fileUploadRootDirWindows = "C:/work/upload/" ;
37+ private static final String WINDOWS_DIR = HOME_DIR + "\\ upload\\ " ;
4038
41- // @Value"${file.upload.root.dir.mac}")
42- String fileUploadRootDirMac = "/Users/Tommy/upload/" ;
39+ private static final String MAC_DIR = HOME_DIR + "/upload/" ;
4340
44- // @Value"${file.upload.root.dir.linux}")
45- String fileUploadRootDirLinux = "~/upload/" ;
41+ private static final String LINUX_DIR = HOME_DIR + "/upload/" ;
4642
47- private static List < String > fileRepository = new ArrayList <>() ;
43+ private static String fileUploadRootDir = null ;
4844
49- // @PostConstruct
50- public void initFileRepository (){
45+ static {
5146 // 判断文件夹是否存在,不存在就创建
5247 String osName = System .getProperty ("os.name" );
5348 if (osName .startsWith ("Mac OS" )) {
5449 // 苹果
55- fileUploadRootDir = fileUploadRootDirMac ;
50+ fileUploadRootDir = MAC_DIR ;
5651 } else if (osName .startsWith ("Windows" )) {
5752 // windows
58- fileUploadRootDir = fileUploadRootDirWindows ;
53+ fileUploadRootDir = WINDOWS_DIR ;
5954 } else {
6055 // unix or linux
61- fileUploadRootDir = fileUploadRootDirLinux ;
56+ fileUploadRootDir = LINUX_DIR ;
6257 }
6358
6459 File directories = new File (fileUploadRootDir );
@@ -73,11 +68,33 @@ public void initFileRepository(){
7368 }
7469 }
7570
71+ public static final List <String > IMG_SUFFIXES = Arrays .asList ("jpg" , "jpeg" , "png" );
72+ private static List <String > fileNames = null ;
7673 @ GetMapping ("/files" )
7774 @ ResponseBody
7875 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+
7996 JSONObject res = new JSONObject ();
80- res .put ("data" , fileRepository );
97+ res .put ("data" , fileNames );
8198 return new DemoParser ().extendSuccessResult (res );
8299 }
83100
@@ -91,7 +108,7 @@ public JSONObject upload(@RequestParam("file") MultipartFile file) {
91108 fileOutputStream .write (file .getBytes ());
92109 fileOutputStream .close ();
93110
94- fileRepository .add (file .getOriginalFilename ());
111+ fileNames .add (file .getOriginalFilename ());
95112
96113 JSONObject res = new JSONObject ();
97114 res .put ("path" , "/download/" + file .getOriginalFilename ());
0 commit comments