溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

將圖片添加到mysql中的方法

發(fā)布時(shí)間:2020-10-29 09:38:43 來源:億速云 閱讀:370 作者:小新 欄目:MySQL數(shù)據(jù)庫

小編給大家分享一下將圖片添加到mysql中的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

將圖片添加到mysql中的方法:首先將數(shù)據(jù)庫存儲圖片的字段類型設(shè)置為blob二進(jìn)制大對象類型;然后將圖片流轉(zhuǎn)化為二進(jìn)制;最后將圖片插入數(shù)據(jù)庫即可。

正常的圖片儲存要么放進(jìn)本地磁盤,要么就存進(jìn)數(shù)據(jù)庫。存入本地很簡單,現(xiàn)在我在這里記下如何將圖片存進(jìn)mysql數(shù)據(jù)庫

如果要圖片存進(jìn)數(shù)據(jù)庫  要將圖片轉(zhuǎn)化成二進(jìn)制。

1.數(shù)據(jù)庫存儲圖片的字段類型要為blob二進(jìn)制大對象類型

2.將圖片流轉(zhuǎn)化為二進(jìn)制

下面放上代碼實(shí)例

一、數(shù)據(jù)庫

CREATE TABLE `photo` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `photo` blob,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

二、數(shù)據(jù)庫鏈接

/**
 * 
 */
package JdbcImgTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @author Administrator
 * 
 */
public class DBUtil
{
    // 定義數(shù)據(jù)庫連接參數(shù)
    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";
    
    // 注冊數(shù)據(jù)庫驅(qū)動
    static
    {
        try
        {
            Class.forName(DRIVER_CLASS_NAME);
        }
        catch (ClassNotFoundException e)
        {
            System.out.println("注冊失?。?quot;);
            e.printStackTrace();
        }
    }
    
    // 獲取連接
    public static Connection getConn() throws SQLException
    {
        return DriverManager.getConnection(URL, USERNAME, PASSWORD);
    }
    
    // 關(guān)閉連接
    public static void closeConn(Connection conn)
    {
        if (null != conn)
        {
            try
            {
                conn.close();
            }
            catch (SQLException e)
            {
                System.out.println("關(guān)閉連接失??!");
                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;
        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();
                }
            }
        }
    }
}

四、轉(zhuǎn)碼存儲

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 測試寫入數(shù)據(jù)庫以及從數(shù)據(jù)庫中讀取
 */
public class ImageDemo
{
    
    // 將圖片插入數(shù)據(jù)庫
    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();
                }
            }
        }
        
    }
    
    // 讀取數(shù)據(jù)庫中圖片
    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中的方法有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI