新聞中心
隨著科技的發(fā)展,越來(lái)越多的商家和個(gè)人希望將圖片、視頻等多媒體文件保存在SQL數(shù)據(jù)庫(kù)中,以便于管理和查詢。那么如何才能將圖片保存至SQL數(shù)據(jù)庫(kù)呢?本文將介紹幾種常見的方法。

成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的上高網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
方法一:二進(jìn)制方式保存
將圖片轉(zhuǎn)換為二進(jìn)制碼,并將二進(jìn)制碼存儲(chǔ)在SQL數(shù)據(jù)庫(kù)中。這種方法簡(jiǎn)單明了,但是存儲(chǔ)的數(shù)據(jù)量較大,需要較大的存儲(chǔ)空間。
首先需要?jiǎng)?chuàng)建一個(gè)保存圖片的表,例如:
CREATE TABLE pics (
pic_id int(11) NOT NULL AUTO_INCREMENT,
pic_name varchar(255) NOT NULL,
pic_data longblob NOT NULL,
PRIMARY KEY (pic_id)
);
然后將圖片讀取并轉(zhuǎn)換為二進(jìn)制碼后,將其保存在這個(gè)表中。
$file = fopen(‘picture.jpg’, ‘rb’);
$size = filesize(‘picture.jpg’);
$data = fread($file, $size);
fclose($file);
$data = addslashes($data);
$sql = “INSERT INTO pics (pic_name, pic_data) VALUES (‘picture.jpg’, ‘$data’)”;
$result = mysqli_query($conn, $sql);
if (!$result) {
die(‘Error: ‘ . mysqli_error($conn));
}
方法二:將圖片保存在服務(wù)器,然后在SQL數(shù)據(jù)庫(kù)中保存其路徑
將圖片上傳到服務(wù)器上,并保存其路徑。在SQL數(shù)據(jù)庫(kù)中保存該路徑,需要時(shí)訪問路徑以獲取圖片。
這種方法的好處是,可以將圖片和SQL數(shù)據(jù)庫(kù)分離,避免數(shù)據(jù)量過大導(dǎo)致數(shù)據(jù)庫(kù)卡頓。但是如果服務(wù)器崩潰,圖片也隨之丟失。
首先需要?jiǎng)?chuàng)建一個(gè)保存路徑的表,例如:
CREATE TABLE pic_paths (
pic_id int(11) NOT NULL AUTO_INCREMENT,
pic_name varchar(255) NOT NULL,
pic_path varchar(255) NOT NULL,
PRIMARY KEY (pic_id)
);
然后將圖片上傳到服務(wù)器上,記錄下上傳后的路徑,并將路徑保存在這個(gè)表中。
$target_dir = ‘uploads/’;
$target_file = $target_dir . basename($_FILES[‘file’][‘name’]);
if (move_uploaded_file($_FILES[‘file’][‘tmp_name’], $target_file)) {
$sql = “INSERT INTO pic_paths (pic_name, pic_path) VALUES (‘{$_FILES[‘file’][‘name’]}’, ‘{$target_file}’)”;
$result = mysqli_query($conn, $sql);
if (!$result) {
die(‘Error: ‘ . mysqli_error($conn));
}
}
方法三:使用Blob存儲(chǔ)
存儲(chǔ)圖片時(shí)使用Blob數(shù)據(jù)類型,這種方法中,圖片數(shù)據(jù)不會(huì)轉(zhuǎn)換為字符串。
首先需要?jiǎng)?chuàng)建一個(gè)保存圖片的表,例如:
CREATE TABLE images (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
image BLOB NOT NULL
);
然后將圖片轉(zhuǎn)換成二進(jìn)制形式,并將其保存在這個(gè)表中。
$image = file_get_contents(‘picture.jpg’);
$image = mysqli_real_escape_string($conn, $image);
$sql = “INSERT INTO images (image) VALUES (‘{$image}’)”;
$result = mysqli_query($conn, $sql);
if (!$result) {
die(‘Error: ‘ . mysqli_error($conn));
}
無(wú)論使用何種方法,都需要考慮圖片大小、圖片格式和數(shù)據(jù)量對(duì)數(shù)據(jù)庫(kù)負(fù)荷的影響,合理選擇方法才能更好的實(shí)現(xiàn)圖片的存儲(chǔ)與管理。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
怎么在sql數(shù)據(jù)庫(kù)中存放圖片
把文件存入數(shù)據(jù)庫(kù) 需要使用一些代碼
一般不把圖片直裂禪接存進(jìn)數(shù)據(jù)庫(kù)畢源尺
而是手高把路徑放進(jìn)去
SQL2023用
方法:
1、建立過程
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
‘textcopy /S ‘ + @srvname +
‘ /U ‘ + @login +
‘ /P ‘ + @password +
‘ /D ‘ + @dbname +
‘ /T ‘ + @tbname +
‘ /C ‘ + @colname +
‘ /W “‘ + @whereclause +
‘”塌輪 /F ‘ + @filename +
‘ /’ + @direction
EXEC master..xp_cmdshell @exec_str
2、建表和初始化數(shù)據(jù)
create table 表名 (編號(hào) int,image列名 image)
go
insert 表名 values(1,0x)必須的,且不是null
insert 表名 values(2,0x)必須的虛羨,且不是null
go
3、讀入
sp_textcopy ‘你的服務(wù)器名’,’sa’,’你的密碼’,’庫(kù)名’,’表名’,’image列名’,’c:\圖片.bmp’,’where 編號(hào)=1′,’I’ –注意條件是 編號(hào)=1
sp_textcopy ‘你的服務(wù)器名’,’sa’,’你的密碼’,’庫(kù)名’,’表名’,’image列名’,’c:\bb.doc’,’where 編號(hào)=2′,’I’ –注意條件是 編號(hào)=2
go
4、讀出成文件
sp_textcopy ‘你的服務(wù)器名’,’sa’,’你的密碼’,’庫(kù)名’,’表名’,’image列名’,’c:\圖片.bmp’,’where 編號(hào)=1′,’O’ –注意條件是 編號(hào)=1
sp_textcopy ‘你的服務(wù)器名’,’sa’,’你的密碼’,’庫(kù)名’,’表名’,’image列名’,’c:\bb.doc’,’where 編號(hào)=2′,’O’ –注意條件是 編號(hào)=2
go
************如果報(bào)textcopy不是可執(zhí)行文件的話,你就到
C:\Program Files\團(tuán)譽(yù)信Microsoft SQL Server\MSSQL\Binn
目錄下拷備 textcopy.exe到:
C:\Program Files\Microsoft SQL Server\80\Tools\Binn
SQL2023直接用
INSERT INTO myTable(FileName, FileType, Photo)
SELECT ‘Roy1.jpg’ AS FileName,
‘.JPG’ AS FileType,
* FROM OPENROWSET(BULK N’C:\Roy1.jpg’, SINGLE_BLOB) AS Document
VB在SQL Server 2023中存儲(chǔ)圖片,其實(shí)不是特別困難的。
1、數(shù)據(jù)表必須有數(shù)據(jù)類型是頌此Image類型的字段,這個(gè)字段是可以存儲(chǔ)圖形的二進(jìn)制數(shù)據(jù)的,存儲(chǔ)量可達(dá)2G字節(jié)。
2、可想,存儲(chǔ)圖形二進(jìn)制數(shù)據(jù),必須就原來(lái)的圖形轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),這是存儲(chǔ)圖形數(shù)據(jù)的關(guān)鍵。
3、存儲(chǔ)的二進(jìn)制圖形,如果要讀取,必須就二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為圖形數(shù)據(jù)。
上面是VB在SQL Server 2023中存儲(chǔ)圖片的喚滾必須要求。但是也可以在數(shù)據(jù)表存儲(chǔ)圖形的路徑,這樣比較簡(jiǎn)單,和櫻余但是不安全,我們就以存儲(chǔ)二進(jìn)制數(shù)據(jù)討論吧。
一、存儲(chǔ)圖形的關(guān)鍵語(yǔ)句:
Dim mst As New ADODB.Stream ‘Stream 對(duì)象是進(jìn)行二進(jìn)制數(shù)據(jù)操作對(duì)象
mst.Type = abTypeBinary
mst.Open
If 圖片的路徑和文件名變量(需要用其他方法獲得)> “” Then
mst.LoadFromFile 圖片的路徑和文件名變量
End If
rs(“存儲(chǔ)二進(jìn)制數(shù)據(jù)的字段”) = mst.Read
二、讀取存儲(chǔ)的二進(jìn)制數(shù)據(jù)的關(guān)鍵語(yǔ)句:
Dim mst As New ADODB.Stream
mst.Type = abTypeBinary
mst.Open
mst.Write rs(“存儲(chǔ)二進(jìn)制數(shù)據(jù)的字段”)
mst.SaveToFile App.Path & “/” & list1.Text,abSaveCreateOverWrite
Picture1.Picture = LoadPicture(App.Path & “/” & List1.Text)
mst.Close ‘別忘了關(guān)閉對(duì)象!
建立一個(gè)圖片儲(chǔ)存目錄,只用數(shù)據(jù)庫(kù)記錄圖片的儲(chǔ)存路徑即可。
存成image類型就可以了
怎樣將圖片存儲(chǔ)到SQL數(shù)據(jù)庫(kù)中
可以用數(shù)據(jù)類型設(shè)置為image
但是本人認(rèn)為存儲(chǔ)圖片到數(shù)據(jù)庫(kù)里塌啟,有點(diǎn)慢,本人實(shí)際一般都是把圖片扮衫昌復(fù)制到一個(gè)公共文件夾里,然后按照一定規(guī)則起名字,再把存儲(chǔ)路徑保存到數(shù)據(jù)庫(kù)里,調(diào)用的時(shí)候把路徑給圖片控件給他就可以了廳扒,感覺能快點(diǎn)
只是個(gè)人想法
關(guān)于把圖片保存在sql數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動(dòng)服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長(zhǎng),共創(chuàng)價(jià)值。
網(wǎng)頁(yè)題目:如何將圖片保存至SQL數(shù)據(jù)庫(kù)?(把圖片保存在sql數(shù)據(jù)庫(kù))
本文路徑:http://fisionsoft.com.cn/article/djscspj.html


咨詢
建站咨詢
