/**
* 上传文件
* @param file
*/
public static boolean upload(MultipartFile file,String filePath){
if(file == null || file.isEmpty()){
return false;
}
File dest = new java.io.File(filePath);
// 判断路径是否存在,如果不存在则创建
java.io.File folder = dest.getParentFile();
if(!folder.exists()) {
folder.mkdirs();
}
try {
//保存文件
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(filePath));
outputStream.write(file.getBytes());
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
/**
* 递归遍历文件,查找符合后缀名文文件读入
* @param file
*/
public static boolean recursiveTraversalFiles(File file,BufferedOutputStream bos) throws IOException {
if(file.isFile()){
//获取文件名
String fileName = file.getName();
//截取后缀名
String suffix = fileName.substring(fileName.lastIndexOf(“.”)+1);
if(“txt”.equals(suffix)){
//判断是md文件,完成文件读入操作
readFile(file,bos);
}
}else {
File[] files = file.listFiles();
for(File fi :files){
//递归遍历文件
recursiveTraversalFiles(fi,bos);
}
}
return true;
}
/**## 标题
* 文件读入操作
* @param file
* @param bos
*/
public static void readFile(File file,BufferedOutputStream bos){
BufferedInputStream bis = null;;
try {
bis = new BufferedInputStream(new FileInputStream(file));
int len =-1;
byte[] bytes = new byte[1024];
while((len = bis.read(bytes))!=-1){
bos.write(bytes,0,len);
}
bis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//文件上传
boolean bool = true;
//切片存放根目录
String section = pro.getProperty(“filestore.section”);
//创建临时文件夹,用来存放分片文件
File folder = new File(section + fileBean.getFilename());
folder.mkdirs();
//判断是不是最后一个分片
if (fileBean.getChunkindex() + 1 != fileBean.getChunktotal()) {
//将分片以.txt文件形式放在本地
FileUtil.upload(file, section + fileBean.getFilename() + "/" + fileBean.getChunkindex() + ".txt");
} else {
//将分片以.txt文件形式放在本地
FileUtil.upload(file, section + fileBean.getFilename() + "/" + fileBean.getChunkindex() + ".txt");
filevo.setFilename(fileBean.getFilename()); //暂存文件名称
//上传后文件名称
String localFileName = getFileName(filevo);
filevo.setFilename(localFileName); //最终保存的文件名称
String fileDiskPath = fileDisk + "/" + fpath + "/" + localFileName;
//需要递归遍历的文件夹的绝对路径
File filess = new File(section + fileBean.getFilename());
//创建文件夹路径
File filePath = new File(fileDisk + "/" + fpath);
filePath.mkdirs();
//合并之后的文件的路径以及文件名
File outFile = new File(fileDiskPath);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile));
//切片合并上传
bool = FileUtil.recursiveTraversalFiles(filess, bos);
bos.close();
//删除临时文件夹
FileUtil.deleteDirectory(section + fileBean.getFilename());
}
if(bool&&fileBean.getChunkindex() + 1 == fileBean.getChunktotal()){ //上传成功
if(DataCheck.isNull(fileid)){ //新增
fileid = this.etmffileinfoDao.newObject(filevo, EtmffileinfoVO.class).getObjectid();
}else{ //更新
EtmffileinfoVO etmffileinfoVO = this.loadObject(fileid, EtmffileinfoVO.class);
if((DataCheck.isNull(etmffileinfoVO.getVersion())&&DataCheck.isNull(fileBean.getVersion()))||etmffileinfoVO.getVersion().equals(fileBean.getVersion())){
//文件更新,修改原来数据
FileUtil.deleteFile(fileDisk+etmffileinfoVO.getFilepath()+"/"+etmffileinfoVO.getFilename());
etmffileinfoVO.setFilesize(filevo.getFilesize());
etmffileinfoVO.setFiletype(filevo.getFiletype());
etmffileinfoVO.setDeleted(filevo.getDeleted());
etmffileinfoVO.setCreatedat(filevo.getCreatedat());
etmffileinfoVO.setUpdatedat(filevo.getUpdatedat());
etmffileinfoVO.setUpdateusername(personName);
etmffileinfoVO.setFilepath(filevo.getFilepath());
etmffileinfoVO.setProjectid(filevo.getProjectid());
etmffileinfoVO.setProjectname(filevo.getProjectname());
etmffileinfoVO.setCountryid(filevo.getCountryid());
etmffileinfoVO.setCountryname(filevo.getCountryname());
etmffileinfoVO.setSiteid(filevo.getSiteid());
etmffileinfoVO.setSitename(filevo.getSitename());
etmffileinfoVO.setParentid(filevo.getParentid());
etmffileinfoVO.setUpdateremark(filevo.getUpdateremark());
etmffileinfoVO.setProcessid(filevo.getProcessid());
etmffileinfoVO.setProcessname(filevo.getProcessname());
etmffileinfoVO.setBelonguserid(filevo.getBelonguserid());
etmffileinfoVO.setBelongusername(filevo.getBelongusername());
etmffileinfoVO.setLastCheckId(filevo.getLastCheckId());
etmffileinfoVO.setFileext(filevo.getFileext());
etmffileinfoVO.setVersion(filevo.getVersion());
etmffileinfoVO.setVersiondate(filevo.getVersiondate());
etmffileinfoVO.setFilename(filevo.getFilename()); //最终保存的文件名称
etmffileinfoDao.updateObject(etmffileinfoVO,EtmffileinfoVO.class);
}else {
//版本更新,新增一条数据
fileid = this.etmffileinfoDao.newObject(filevo, EtmffileinfoVO.class).getObjectid();
}
}