项目有个需求,当上传的图片过大时先返回一个“图片正在上传中……”的提示。
查看文档,发现了这个Image.isUploaded()方法
照着注释试了几次,发现效果不符预期,返回结果总是false。
环境:
OpenJDK 17 Mac OS Monterey 12.6.1 mirai-core-jvm 2.13.0-RC2 SpringBoot Maven 项目测试操作
我先是如下操作
查看源码,又通过Image.Builder构造Image对象
File file = new File(photoPath); try ( ExternalResource resource = ExternalResource.create(file) ) { BufferedImage bufferedImage = ImageIO.read(file); String suffix = FileNameUtil.getSuffix(file); String imageId = generateImageId(resource.getMd5(), suffix); Image.Builder builder = Image.Builder.newBuilder(imageId); builder.setType(); builder.setSize(); builder.setWidth(); builder.setHeight(); // 我能确保上述参数与Bot.uploadImage()返回的一致 Image image = builder.build(); // 仍然是false,图片的确在服务器上 return Image.isUploaded(image, bot); } catch (Exception e) { return null; }不确定是不是BUG。X (
暂时的替代方法如下:
通过Image.queryUrl()获取图片的URL,调用http GET请求获取目标图片,也可通过状态码来进行简易判断。