如何通过JDA使用addFiles()方法发送图片?当前实现遇报错
解决JDA最新版本发送图片的报错问题
你的报错核心原因是**FileUpload构造函数使用错误**——JDA的FileUpload没有仅接收InputStream的重载,必须同时指定文件名(Discord需要文件名识别文件类型)。
修正方案
给FileUpload补充文件名参数,或使用更简洁的fromData静态方法:
方法1:使用fromData静态方法(推荐)
byte[] buffer = ((DataBufferByte) img.getRaster().getDataBuffer()).getData(); // 第二个参数为带后缀的文件名,让Discord识别图片格式 FileUpload upload = FileUpload.fromData(buffer, "output.png"); c.sendMessage("Image:").addFiles(upload).complete();
方法2:补全FileUpload构造函数参数
byte[] buffer = ((DataBufferByte) img.getRaster().getDataBuffer()).getData(); // 构造函数需同时传入InputStream和文件名 FileUpload upload = new FileUpload(new ByteArrayInputStream(buffer), "output.png"); c.sendMessage("Image:").addFiles(upload).complete();
额外注意
- 确保
img是BufferedImage类型,否则getRaster().getDataBuffer()的强制转换可能抛出异常。 - 文件名后缀必须与图片格式匹配(如
.png对应PNG图),否则Discord可能无法将其识别为图片展示。
内容的提问来源于stack exchange,提问作者Gork
相关产品推荐
相关产品推荐

