美文网首页
使用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