1. 程式人生 > >資料夾上傳(JavaScript及Java)

資料夾上傳(JavaScript及Java)

@Service("sysFilesUploadService")
public class SysFilesUploadServiceImpl implements SysFilesUploadService {

//檔案儲存地址
@Value("${file_storage_address}")
private String Storage_PATH;
@Value("${file_format_require}")
private String File_Format;

@Override
public String upload(List<MultipartFile> files) {

BufferedOutputStream bos =null;
     BufferedInputStream bis=null;
     
     //檔案格式要求
     String[] suffixArr = File_Format.split(",");
     List<String> suffixList = Arrays.asList(suffixArr);
     
     //判斷儲存的資料夾是否存在
     File file=new File(Storage_PATH);
     if(!file.exists()) {
    file.mkdirs(); 
     }
     
        try {
//遍歷資料夾
        for (MultipartFile mf : files) {
if(!mf.isEmpty()) {
String originalFilename = mf.getOriginalFilename();
String  suffix = originalFilename.substring(originalFilename.lastIndexOf(".")+1);
//格式限制,非wav格式的不上傳
if(!suffixList.contains(suffix)) {
continue;
}
String fileName=originalFilename.substring(originalFilename.lastIndexOf("/")+1);
//為避免檔案同名覆蓋,給檔名加上時間戳
int index = fileName.lastIndexOf(".");
String firstName=fileName.substring(0, index);
String lastName=fileName.substring(index);
fileName=firstName+"_"+System.currentTimeMillis()+lastName;
//讀取檔案
bis=new BufferedInputStream (mf.getInputStream());
//指定儲存的路徑
bos=new BufferedOutputStream(new FileOutputStream
(Storage_PATH+fileName));
int len=0;
byte[] buffer=new byte[10240];
            while((len=bis.read(buffer))!=-1){
                bos.write(buffer, 0, len);
            }
            //重新整理此緩衝的輸出流,保證資料全部都能寫出
            bos.flush();
}
}
        if(bis!=null) {
        bis.close();
        }
        if(bos!=null) {
        bos.close();
        }
        return "ok";
} catch (FileNotFoundException e) {      
        e.printStackTrace();      
        return "error";      
    } catch (IOException e) {      
        e.printStackTrace();      
        return "error";          
    }
}


}