struts2+hibernate實現圖片的上傳和顯示
struts2+hibernate實現圖片的上傳和顯示
這里的上傳是指將圖片上傳到數據庫,顯示是把多張數據庫的圖片顯示在一個jsp文件里。
bookImg為圖片上傳到本地對應的File實例。
但是struts2沒有為img提供包裝的標簽,怎么動態的設置img的src呢?? 原來還可以這樣用~~~
圖片在數據庫里面用blob類型表示,在mysql里面blob能夠存儲的大小
類型 | 大小(單位:字節) |
TinyBlob | 最大 255 |
Blob | 最大 65K |
MediumBlob | 最大 16M |
LongBlob | 最大 4G |
數據是網上找的,不保證一定對,做參考吧。
在hibernate中blob被映射成byte[],下面是例子
- public class Book implements java.io.Serializable {
- private String id;
- private BookChildKind bookChildKind;
- private BookKind bookKind;
- private String bookName;
- private int price;
- private String bookAuther;
- private String bookPublisher;
- private byte[] bookImg; //這個對應數據庫blob類型的字段
- private Date buyTime;
- private int totalCount;
- private String bookDescribe;
- private int sellCount;
- }
上傳圖片到本地硬盤的過稱我之前的文章寫過了http://blog.csdn.net/zhiweiv/archive/2008/10/16/3085834.aspx,這里就不寫了。主要的是把數據存入到數據庫。
- byte buffer[]=new byte[(int)bookImg.length()];
- FileInputStream in=new FileInputStream(bookImg);
- in.read(buffer);
- book.setBookImg(buffer);
然后是將數據庫里面的圖片讀出來作為img的src顯示出來,原理和以前那個struts2的圖形驗證碼實現相同http://blog.csdn.net/zhiweiv/archive/2008/10/08/3035811.aspx。使用struts2的stream返回img的字節信息作為圖片的src,這里的問題是一個頁面有很多圖片,有一個action提供返回指定id的數據庫記錄的圖片字節流
- public String getImg(){
- Book book=bookDao.get(id);
- inputStream=new ByteArrayInputStream(book.getBookImg());
- return "img";
- }
- <img src="mainPageAction!getImg.action?id=<s:property value="id"/>"/>
以前我一直不知道原來struts2的標簽還可以這樣用的
posted @ 2009-04-23 15:48 nicky 閱讀(6170) | 評論 (2) | 編輯 收藏