package com.aol.sym.upload;
import com.aol.api.sym.domain.upload.FileUploadInfo;
import com.aol.api.sym.service.upload.IFileUploadService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
@Slf4j
@RestController
@RequestMapping(value = “/api/upload”,method = RequestMethod.POST)
public class UploadController {
@Value("${honeywell.sme.attach_file_dir}")//**yml文件的跟路径**
private String ATTACH_FILE_DIR;
@Autowired
private IFileUploadService iFileUploadService;
@PostMapping(“/file”)
public FileUploadInfo uploadFile(@RequestParam(“file”) MultipartFile file) {
LocalDate now=LocalDate.now();
DateTimeFormatter df=DateTimeFormatter.ofPattern(“yyyyMMdd”);
String dateDir =now.format(df);
FileUploadInfo fileUploadInfo=new FileUploadInfo();
try {
String fileCode = String.valueOf(System.nanoTime());
// 获取文件名
String oriFileName = file.getOriginalFilename();
// 获取文件的后缀名
String suffix = oriFileName.substring(oriFileName.lastIndexOf("."), oriFileName.length());
//文件上传的路径
String dirPath = ATTACH_FILE_DIR + dateDir + "/";
// 获取文件上传的全路径(防止文件名称相同)
String fullFilePath = dirPath + fileCode+ suffix;
log.info(“上传文件存储路径:”+fullFilePath);
mkDir(new File(dirPath));
BufferedOutputStream outputStream = new BufferedOutputStream(new FileOutputStream(fullFilePath));
outputStream.write(file.getBytes());
outputStream.flush();
outputStream.close();
//保存数据
fileUploadInfo.setName(oriFileName.substring(0, oriFileName.lastIndexOf(".")));
fileUploadInfo.setSuffix(suffix);
fileUploadInfo.setSize(file.getSize());
fileUploadInfo.setCode(fileCode);
fileUploadInfo.setUrl(fullFilePath);
iFileUploadService.saveInfo(fileUploadInfo);//调用saveInfo保存到数据库的方法
}catch (Exception e){
e.printStackTrace();
}
return fileUploadInfo;
}
@PostMapping("/doubleFile")
public FileUploadInfo doubleFile(HttpServletRequest request){
//用list集合接受上传的多个文件
List files=((MultipartHttpServletRequest) request).getFiles("file");
MultipartFile file = null;
BufferedOutputStream stream = null;
FileUploadInfo fileUploadInfo=null;
for (int i=0;i
// 获取文件上传的全路径(防止文件名称相同)
String fullFilePath = dirPath + fileCode+ suffix;
log.info(“上传文件存储路径:”+fullFilePath);
mkDir(new File(dirPath));
stream = new BufferedOutputStream(new FileOutputStream(fullFilePath));
stream.write(file.getBytes());
stream.flush();
stream.close();
//保存数据
fileUploadInfo.setName(oriFileName.substring(0, oriFileName.lastIndexOf(".")));
fileUploadInfo.setSuffix(suffix);
fileUploadInfo.setSize(file.getSize());
fileUploadInfo.setCode(fileCode);
fileUploadInfo.setUrl(fullFilePath);
iFileUploadService.saveInfo(fileUploadInfo);
}catch (Exception e){
e.printStackTrace();
}
}
}
return fileUploadInfo;
}
/**-------------------------------------- wancy ------------------------------------------**/
/**
* 判断文件夹是否存在
* @param file
*/
public static void mkDir(File file) {
if (file.getParentFile().exists()) {
file.mkdir();
} else {
mkDir(file.getParentFile());
file.mkdir();
}
}
}