使用NIO完成文件上传处理
参考文章
关于NIO文件操作的文章可以参阅:nio操作文件
代码
@Override
public Result<FileUploadResultVo> uploadImg(HttpServletRequest request, HttpServletResponse response, MultipartFile originFile)throws Exception {
checkImgValid(originFile);
try{
Path dir = Paths.get(FileUploadConstant.IMG_UPLOAD_PATH);
if(!Files.exists(dir)){
Files.createDirectory(dir);
}
String uuidOriginalName = RandomUtils.uuid()+originFile.getOriginalFilename();
Path p = Paths.get(FileUploadConstant.IMG_UPLOAD_PATH + uuidOriginalName);
Path newFile=null;
if(!Files.exists(p)){
newFile = Files.createFile(p);
}
InputStream in =originFile.getInputStream();
long copy = Files.copy(in, newFile, StandardCopyOption.REPLACE_EXISTING);
String relativePath = "/imgs/" + uuidOriginalName;
String fullPath = this.getHost()+relativePath;
FileUploadResultVo resultVo = new FileUploadResultVo();
resultVo.setFilePath(relativePath);
resultVo.setPreviewPath(fullPath);
return new Result().ok( resultVo);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
private void checkImgValid(MultipartFile originFile) {
//校验文件格式
if (originFile == null) {
throw new WXMiniprogramException("未检测到文件");
}
if (originFile.getOriginalFilename() == null) {
throw new WXMiniprogramException("文件名不能为空");
}
String suffixs = ".bmp.jpg.png.BMP.JPG.PNG.jpeg.JPEG";
String suffix = originFile.getOriginalFilename().substring(originFile.getOriginalFilename()
.lastIndexOf("."));
if (!suffixs.contains(suffix)) {
throw new WXMiniprogramException("图片格式有误,必须为bmp, jpg, png,jpeg图片格式中的一种");
}
}
总结
可见,使用NIO使得文件的操作变得 简单高效。
网友评论