关于Thumbnails上传图片代码

public String processingPictures(MultipartFile file, HttpServletRequest request) throws Exception {
        String userId = request.getParameter("userId");
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");

        String accountNumber = userMapper.selectById(userId).getAccountNumber();//唯一账户

        String filename, basePath, simpleUUID, photoName, fileNamePath, pictureUrl;

        String folder = "/usr/local/jz-yz-picture/";

        //获取文件名
        filename = file.getOriginalFilename();
//        //获取协议号
//        basePath = request.getScheme()
//                + "://"
//                + request.getServerName()//获取IP地址
//                + ":"
//                + request.getServerPort()//获取端口号
//                + request.getContextPath();//获取工程路径

        String[] split = filename.split("\\.");
        simpleUUID = IdUtil.simpleUUID()+accountNumber; //加上账号唯一标识
        photoName = simpleUUID + "." + split[1];    //存入服务器的头像文件名

        fileNamePath = folder + File.separator + photoName;
        File destFile = new File(fileNamePath);

        pictureUrl = UploadUtils.getNginxPath() + photoName;    //存入服务器和返回给前端的头像图片地址

        //判断是否存在, 不存在就创建
        if (!destFile.getParentFile().exists()) {
            destFile.getParentFile().mkdirs();
        }
        File[] files = destFile.getParentFile().listFiles();
        //用以判断用户是否已经有头像了,有头像就删掉原来的头像
        boolean flag = true;
        for (File fileName : files) {
            if (fileName.getName().contains(accountNumber)) {
                flag = fileName.delete();
            }
        }
        if (flag) {
            //压缩图片并保存
            Thumbnails.of(file.getInputStream()).scale(0.8).toFile(destFile);
            userMapper.updateById(new User(Integer.parseInt(userId),
                    null,userName,
                    null,password,pictureUrl,
                    null,null,null,null));
            return pictureUrl;
        }
        return null;
    }

如果

报“No suitable ImageReader found for source data”异常处理。

原因是因为图片原来的格式不是jpg或者png格式的,是人为改后缀格式,最后解析失败导致。查阅了相关资料暂时没有解决办法。但是正常的图片都是可以上传到服务器的

posted @ 2022-07-12 15:52  古家杰  阅读(282)  评论(0)    收藏  举报