對于開發人員來說,使用MySQL數據庫存儲圖片是一種很常見的操作。下面將介紹如何將圖片存儲到MySQL數據庫。
1.創建數據庫表
CREATE TABLE `picture` ( `pic_id` int(11) NOT NULL AUTO_INCREMENT, `pic_name` varchar(50) DEFAULT NULL COMMENT '圖片名稱', `pic_data` longblob COMMENT '圖片數據', PRIMARY KEY (`pic_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.創建存儲過程
DELIMITER // CREATE PROCEDURE `InsertPicture`(IN pic_name VARCHAR(50), IN pic_data LONGBLOB) BEGIN INSERT INTO picture(pic_name,pic_data) VALUES (pic_name,pic_data); END // DELIMITER ;
3.JAVA代碼實現
String sql = “{call InsertPicture(?,?)}”; pstmt=conn.prepareCall(sql); pstmt.setString(1,picture.getPicName()); pstmt.setBytes(2,picture.getPicData()); pstmt.executeUpdate();
4.JSP代碼實現
<% String picName=request.getParameter("picName");//圖片名稱 int fileSize=request.getContentLength();//獲取圖片數據大小 byte[] picData=new byte[fileSize];//圖片數據 InputStream is=request.getInputStream(); is.read(picData);//讀取圖片數據 try{ Connection conn=DBConnection.getConnection(); CallableStatement cstmt=conn.prepareCall("{call InsertPicture(?,?)}"); cstmt.setString(1,picName); cstmt.setBytes(2,picData); cstmt.executeUpdate(); cstmt.close(); conn.close(); response.getWriter().print("OK"); }catch(Exception e){ e.printStackTrace(); } %>
通過以上步驟,我們可以將圖片存儲到MySQL數據庫中,方便后續的讀取和使用。