美文网首页
使用Java NIO完成文件上传

使用Java NIO完成文件上传

作者: 大风过岗 | 来源:发表于2019-12-27 18:41 被阅读0次

    使用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使得文件的操作变得 简单高效。

    相关文章

      网友评论

          本文标题:使用Java NIO完成文件上传

          本文链接:https://www.haomeiwen.com/subject/jzndoctx.html