画像を mysql に追加する方法: まず、画像を BLOB バイナリ ラージ オブジェクト タイプとして保存するようにデータベースのフィールド タイプを設定し、次に画像ストリームをバイナリに変換し、最後に画像をデータベースに挿入します。
推奨事項: 「mysql ビデオ チュートリアル 」
通常のイメージ ストレージ、またはローカル ディスクに保存します。 , またはデータベースに保存します。ローカルに保存するのはとても簡単なので、ここで mysql データベースに画像を保存する方法を書いておきます
画像をデータベースに保存したい場合は、画像をバイナリに変換する必要があります。
1. データベースに画像を保存するためのフィールド タイプは BLOB バイナリ ラージ オブジェクト タイプである必要があります
2. 画像ストリームをバイナリに変換します
コード例を以下に示します
1. データベース
CREATE TABLE `photo` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `photo` blob, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2. データベースリンク
/** * */ package JdbcImgTest; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; /** * @author Administrator * */ public class DBUtil { // 定义数据库连接参数 public static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver"; public static final String URL = "jdbc:mysql://localhost:3306/test"; public static final String USERNAME = "root"; public static final String PASSWORD = "root"; // 注册数据库驱动 static { try { Class.forName(DRIVER_CLASS_NAME); } catch (ClassNotFoundException e) { System.out.println("注册失败!"); e.printStackTrace(); } } // 获取连接 public static Connection getConn() throws SQLException { return DriverManager.getConnection(URL, USERNAME, PASSWORD); } // 关闭连接 public static void closeConn(Connection conn) { if (null != conn) { try { conn.close(); } catch (SQLException e) { System.out.println("关闭连接失败!"); e.printStackTrace(); } } } //测试 /* public static void main(String[] args) throws SQLException { System.out.println(DBUtil.getConn()); } */ }
3. ピクチャストリーム
package JdbcImgTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /** * @author Administrator * */ public class ImageUtil { // 读取本地图片获取输入流 public static FileInputStream readImage(String path) throws IOException { return new FileInputStream(new File(path)); } // 读取表中图片获取输出流 public static void readBin2Image(InputStream in, String targetPath) { File file = new File(targetPath); String path = targetPath.substring(0, targetPath.lastIndexOf("/")); if (!file.exists()) { new File(path).mkdir(); } FileOutputStream fos = null; try { fos = new FileOutputStream(file); int len = 0; byte[] buf = new byte[1024]; while ((len = in.read(buf)) != -1) { fos.write(buf, 0, len); } fos.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (null != fos) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
4. トランスコーディングストレージ
package JdbcImgTest; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; /** * @author Administrator 测试写入数据库以及从数据库中读取 */ public class ImageDemo { // 将图片插入数据库 public static void readImage2DB() { String path = "D:/Eclipse/eclipseWorkspace/TestProject/Img/mogen.jpg"; Connection conn = null; PreparedStatement ps = null; FileInputStream in = null; try { in = ImageUtil.readImage(path); conn = DBUtil.getConn(); String sql = "insert into photo (id,name,photo)values(?,?,?)"; ps = conn.prepareStatement(sql); ps.setInt(1, 1); ps.setString(2, "Tom"); ps.setBinaryStream(3, in, in.available()); int count = ps.executeUpdate(); if (count > 0) { System.out.println("插入成功!"); } else { System.out.println("插入失败!"); } } catch (Exception e) { e.printStackTrace(); } finally { DBUtil.closeConn(conn); if (null != ps) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } } } // 读取数据库中图片 public static void readDB2Image() { String targetPath = "C:/Users/Jia/Desktop/mogen.jpg"; Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DBUtil.getConn(); String sql = "select * from photo where id =?"; ps = conn.prepareStatement(sql); ps.setInt(1, 1); rs = ps.executeQuery(); while (rs.next()) { InputStream in = rs.getBinaryStream("photo"); ImageUtil.readBin2Image(in, targetPath); } } catch (Exception e) { e.printStackTrace(); } finally { DBUtil.closeConn(conn); if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (ps != null) { try { ps.close(); } catch (SQLException e) { e.printStackTrace(); } } } } //测试 public static void main(String[] args) { //readImage2DB(); readDB2Image(); } }
以上がmysqlに画像を追加する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。