我試圖從URL(使用java包 java.net.URL)讀取圖像爲byte []。 「一切」工作正常,除了內容沒有被從流中完整地讀取(圖像已損壞,它不包含所有圖像數據)...字節數組正在持久化在數據庫(BLOB)中。我真的不知道正確的做法是什麼,也許你可以給我一個提示:)java.net.URL將流讀取到byte []
這是我的第一種方法(格式化代碼,刪除不必要信息...):
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();
無論是在損壞的圖像的代碼的結果...... 我已經閱讀這篇文章from stackoverflow
請不要寫空的catch-阻止,即使在一個例子中!至少把'e.printStackTrace()'放在那裏!例子有成爲產品代碼的傾向,我們都必須稍後再處理。 – 2010-02-19 09:56:37
你是對的;感謝您指出了這一點。我爲示例添加了更有意義的異常處理。 – RTBarnard 2010-02-19 10:02:08
使用http://commons.apache.org/io/api-1.4/org/apache/commons/io/IOUtils.html#toByteArray(java.io.InputStream)。這會使代碼看起來更清潔。 – Adi 2010-02-19 10:12:52