共计 3578 个字符,预计需要花费 9 分钟才能阅读完成。
自动写代码机器人,免费开通
丸趣 TV 小编给大家分享一下将图片添加到 mysql 中的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
将图片添加到 mysql 中的方法:首先将数据库存储图片的字段类型设置为 blob 二进制大对象类型;然后将图片流转化为二进制;最后将图片插入数据库即可。
正常的图片储存要么放进本地磁盘,要么就存进数据库。存入本地很简单,现在我在这里记下如何将图片存进 mysql 数据库
如果要图片存进数据库 要将图片转化成二进制。
1. 数据库存储图片的字段类型要为 blob 二进制大对象类型
2. 将图片流转化为二进制
下面放上代码实例
一、数据库
CREATE TABLE `photo` (`id` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
`photo` blob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
二、数据库链接
/**
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
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)
conn.close();
catch (SQLException e)
System.out.println( 关闭连接失败!e.printStackTrace();
// 测试
/* public static void main(String[] args) throws SQLException
System.out.println(DBUtil.getConn());
}
三、图片流
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;
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)
fos.close();
catch (IOException e)
e.printStackTrace();}
四、转码存储
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;
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)
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;
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)
rs.close();
catch (SQLException e)
e.printStackTrace();
if (ps != null)
ps.close();
catch (SQLException e)
e.printStackTrace();
// 测试
public static void main(String[] args)
//readImage2DB();
readDB2Image();}
看完了这篇文章,相信你对将图片添加到 mysql 中的方法有了一定的了解,想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!
向 AI 问一下细节
丸趣 TV 网 – 提供最优质的资源集合!
正文完