Java apache公共FTP,如何将图像文件下载到BufferedImage
所以我试图从FTP站点下载图像文件,从中获取一些元数据,然后使用Play将二进制数据返回到网页!框架。这是我在控制器操作中使用的基本代码(为简洁起见,删除了所有错误检查):
FTPClient ftp = new FTPClient();
ftp.connect(site.host, site.port);
ftp.login(site.username, site.password);
InputStream is = ftp.retrieveFileStream("somefile.png");
Response.current().contentType = "image/png";
renderBinary(is);
我知道输入流的真实类型是SocketInputStream,我需要做些什么才能使用它?
我也试过这个:
BufferedImage bimg = ImageIO.read(is);
但'bimg'显示为null,因此这让我相信输入流中的数据不是有效的图像数据。
有没有人有这方面的经验,可以指出我正确的方向?
没有找到相关结果
已邀请:
1 个回复
骂狮淋唐便
转换为
。这是
上的javadoc,它解释了为什么你得到一个null: - 返回一个BufferedImage作为结果 解码提供的InputStream 选择了ImageReader 从这些中自动进行 目前已注册。 InputStream 包装在ImageInputStream中。如果 没有注册的ImageReader声称是 能够读取结果流, 返回null。 来自的当前缓存设置 getUseCache和getCacheDirectory会 用来控制缓存 创建的ImageInputStream。 此方法不会尝试定位 ImageReaders,可以直接读取 来自InputStream;那可能 使用IIORegistry和 的ImageReaderSpi。 这种方法不会关闭 读取后提供InputStream 操作已经完成;它是 呼叫者的责任关闭 如果需要,流。 因此,我假设
无法读取您拥有的流,因此您从调用中获得null。 UPDATE 你可能会这样做: -
这对你有用吗?