我正在尝试使用Java的java.net.URL包将URL中的图像读取为byte[]。除了流未完全读取内容(图像损坏,不包含所有图像数据)之外,“一切”都正常工作...该字节数组被持久化在数据库(BLOB)中。我真的不知道正确的方法是什么,也许你可以给我一些提示。:)
这是我的第一个尝试(代码格式化,删除了不必要的信息...):
URL u = new URL("http://localhost:8080/images/anImage.jpg");
int contentLength = u.openConnection().getContentLength();
Inputstream openStream = u.openStream();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();
我的第二种方法是这样的(你会看到contentlength
被另一种方式获取):
URL u = new URL(content);
openStream = u.openStream();
int contentLength = openStream.available();
byte[] binaryData = new byte[contentLength];
openStream.read(binaryData);
openStream.close();
这两段代码都会导致图像损坏...我已经阅读了来自Stack Overflow的帖子。
e.printStackTrace()
!示例往往会变成生产代码,我们所有人以后都必须使用它。 - Joachim Saueris.read(byteChunk)
上,永远不会继续执行。 - Roelin = new BufferedInputStream(url.openStream());
,现在它可以正常工作而不会挂起。 - Roel