新聞中心
在當(dāng)今數(shù)字時(shí)代,尤其是隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,圖像已經(jīng)成為人們生活中不可或缺的一部分。而如何高效、安全地存儲(chǔ)這些圖像就成為了各大企業(yè)面臨的一個(gè)重要問(wèn)題。傳統(tǒng)的文件系統(tǒng)存儲(chǔ)方式已經(jīng)不能滿(mǎn)足日益增長(zhǎng)的數(shù)據(jù)存儲(chǔ)需求,而數(shù)據(jù)庫(kù)儲(chǔ)存圖片也成為了越來(lái)越多企業(yè)的選擇。在這篇文章中,我將詳細(xì)介紹一種簡(jiǎn)單高效的圖像存儲(chǔ)方案,希望能夠給大家一些借鑒和啟示。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到旅順口網(wǎng)站設(shè)計(jì)與旅順口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請(qǐng)、網(wǎng)頁(yè)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋旅順口地區(qū)。
一、 圖片存儲(chǔ)問(wèn)題的挑戰(zhàn)
選擇一種合適的圖片存儲(chǔ)方案,首先要明確存儲(chǔ)問(wèn)題的挑戰(zhàn)。主要表現(xiàn)在以下幾個(gè)方面:
1. 存儲(chǔ)容量:隨著高清、3D等多媒體技術(shù)的應(yīng)用,圖片的存儲(chǔ)容量不斷增加。如何高效利用存儲(chǔ)空間成為了一個(gè)重要問(wèn)題。
2. 存儲(chǔ)效率:企業(yè)每天都會(huì)處理海量圖片,如何快速讀取、處理和傳輸圖片成為了一道難題。
3. 圖片安全:很多圖片都具有商業(yè)價(jià)值,如何防止圖片被非法下載、泄露和篡改也成為了一項(xiàng)關(guān)鍵任務(wù)。
4. 查詢(xún)效率:企業(yè)需要快速查詢(xún)某一張圖片,如何建立高效的索引和查詢(xún)體系成為了一個(gè)重要問(wèn)題。
二、 數(shù)據(jù)庫(kù)儲(chǔ)存圖片的優(yōu)勢(shì)
相比傳統(tǒng)的文件系統(tǒng)存儲(chǔ)方式,數(shù)據(jù)庫(kù)儲(chǔ)存圖片具有以下優(yōu)勢(shì):
1. 安全保障:數(shù)據(jù)庫(kù)的存儲(chǔ)機(jī)制可以有效防止文件被非法訪問(wèn)、篡改和擴(kuò)散,能大大提高數(shù)據(jù)的安全性。
2. 標(biāo)準(zhǔn)化管理:數(shù)據(jù)庫(kù)可以采用標(biāo)準(zhǔn)化數(shù)據(jù)管理,便于系統(tǒng)維護(hù)、數(shù)據(jù)備份和數(shù)據(jù)遷移。
3. 高效性能:數(shù)據(jù)庫(kù)的索引機(jī)制可以快速收集、查詢(xún)數(shù)據(jù),以及對(duì)相應(yīng)數(shù)據(jù)進(jìn)行高效的排序和統(tǒng)計(jì)。
4. 可擴(kuò)展性:數(shù)據(jù)庫(kù)存儲(chǔ)方案可以進(jìn)行橫向、縱向擴(kuò)展,隨著企業(yè)業(yè)務(wù)的不斷發(fā)展,存儲(chǔ)容量和性能也可以隨之?dāng)U展。
三、 簡(jiǎn)單高效的圖像存儲(chǔ)方案推薦
針對(duì)上述問(wèn)題和優(yōu)勢(shì),我們提供一種簡(jiǎn)單高效的圖像存儲(chǔ)方案,主要包含以下幾個(gè)步驟:
1. 圖像轉(zhuǎn)碼
在將圖片存儲(chǔ)入數(shù)據(jù)庫(kù)前,我們需要把圖片進(jìn)行壓縮和編碼,壓縮可以減少存儲(chǔ)容量,編碼可以減小數(shù)據(jù)傳輸時(shí)的帶寬負(fù)擔(dān)。我們推薦使用 H.264 編碼,因?yàn)?H.264 具有良好的壓縮比和較低的碼率,能大大降低圖片存儲(chǔ)、傳輸?shù)某杀尽?/p>
2. 圖像存儲(chǔ)
將圖片存儲(chǔ)入數(shù)據(jù)庫(kù)前,需要先進(jìn)行縮略圖生成和圖像元數(shù)據(jù)提取。縮略圖可以減少數(shù)據(jù)傳輸時(shí)的帶寬負(fù)擔(dān),并且在查詢(xún)時(shí)也很有用,能夠降低查詢(xún)時(shí)間。圖像元數(shù)據(jù)包含了圖片的屬性信息,如圖片大小、分辨率、制作者等。在存儲(chǔ)圖片時(shí),我們推薦使用二進(jìn)制流方式存儲(chǔ)在數(shù)據(jù)庫(kù)中,這種方式能夠更好地保障數(shù)據(jù)安全性,避免圖片數(shù)據(jù)被外部篡改、破壞。
3. 圖像索引
為了提高查詢(xún)效率,我們需要為圖片建立索引機(jī)制。一般來(lái)說(shuō),可以建立單獨(dú)的索引表,將圖像元數(shù)據(jù)中的屬性作為索引字段建立相應(yīng)的索引。具體可以根據(jù)企業(yè)實(shí)際情況進(jìn)行設(shè)計(jì)和優(yōu)化。
4. 圖像查詢(xún)
當(dāng)需要查詢(xún)某一張圖片時(shí),可以采用 SQL 語(yǔ)句的方式查詢(xún),也可以通過(guò)圖像特征識(shí)別的方式進(jìn)行查詢(xún)。當(dāng)查詢(xún)多張圖片時(shí),可以采用分頁(yè)方式進(jìn)行查詢(xún),避免一次性返回大量數(shù)據(jù)對(duì)系統(tǒng)帶來(lái)的壓力。
四、 結(jié)束語(yǔ)
通過(guò)本文的介紹,我們可以看到,數(shù)據(jù)庫(kù)儲(chǔ)存圖片是一種簡(jiǎn)單高效的圖像存儲(chǔ)方案,它可以提高數(shù)據(jù)的安全性、標(biāo)準(zhǔn)化管理以及查詢(xún)效率。當(dāng)然,在具體實(shí)現(xiàn)時(shí),還需要結(jié)合企業(yè)業(yè)務(wù)需求進(jìn)行設(shè)計(jì)和優(yōu)化。希望這篇文章能為您提供一些有用的參考和建議。
相關(guān)問(wèn)題拓展閱讀:
- 親啊我怎么把圖片存入到數(shù)據(jù)庫(kù)呢,然后再顯示出來(lái)
- 怎么在sql數(shù)據(jù)庫(kù)中存放圖片
- 如何將圖片儲(chǔ)存在MySQL數(shù)據(jù)庫(kù)里?
親啊我怎么把圖片存入到數(shù)據(jù)庫(kù)呢,然后再顯示出來(lái)
用blob字段可以存二進(jìn)制數(shù)據(jù)
建議存圖片路徑
下面是上傳圖片并保存圖片路徑到數(shù)據(jù)庫(kù)
顯示有很多中方法,如果在gridview里面顯示的就如截圖這樣設(shè)置
protected void Button4_Click(object sender, EventArgs e)
{
野明 string FilePath = “”;
if (FileUpload1.FileName != “”)
{
if (FileUpload1.PostedFile.ContentLength)
{
// PublicFun.PublicFunction.showMsg(this, “上傳文件過(guò)大”);
// return;
}
else
{
// FilePath = Server.MapPath(“~/Download/Dload1”);//服務(wù)器文件路徑
}
FilePath = Server.MapPath(“~/DownLoad/SignImg”);//服務(wù)器文件路徑
FileLoadFun.UpLoad(FilePath, FileUpload1, DropDownList2.SelectedValue);
UploadURL = “~/DownLoad/SignImg/” + DropDownList2.SelectedValue + “_” + FileUpload1.FileName;
UploadURL2 = UploadURL;
sql = ” update yp_insproom_base_t set SignURL='” + UploadURL2 + “‘ ” +
” where UserID='” + DropDownList2.SelectedValue + “‘ “;
好脊或 MySqlHelper.ExecuteNonQuery(PublicFun.PublicFunction.GetDBconstr(“ce_manage_db”), sql);
labmsg.Text = “上傳成功”;
databind();
}
}
友伍 else
{
// PublicFun.PublicFunction.showMsg(this, “上傳文件路徑錯(cuò)誤”);
labmsg.Text = “上傳文件路徑錯(cuò)誤”;
return;
}
}
在數(shù)據(jù)庫(kù)中存放圖片的路徑
顯示的話(huà),在頁(yè)面上綁定數(shù)據(jù)庫(kù)的字段名
試試吧~
一般做項(xiàng)目,存的都是一個(gè)路徑。
你要是有那需要,就把圖片存面二進(jìn)制吧
怎么在sql數(shù)據(jù)庫(kù)中存放圖片
SQL2023用
方法:
1、建立過(guò)程
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í)行文件的話(huà),你就到
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ù)類(lèi)型是頌此Image類(lèi)型的字段,這個(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ì)象!
把文件存入數(shù)據(jù)庫(kù) 需要使用一些代碼
一般不把圖片直裂禪接存進(jìn)數(shù)據(jù)庫(kù)畢源尺
而是手高把路徑放進(jìn)去
建立一個(gè)圖片儲(chǔ)存目錄,只用數(shù)據(jù)庫(kù)記錄圖片的儲(chǔ)存路徑即可。
存成image類(lèi)型就可以了
如何將圖片儲(chǔ)存在MySQL數(shù)據(jù)庫(kù)里?
背景
MySQL 一直以來(lái)都有 TEXT、擾灶BLOB 等類(lèi)型用來(lái)存儲(chǔ)圖片、視頻等大對(duì)象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。
假設(shè)用 MySQL 來(lái)存放電影視頻等信息,一部是 2G,那么存儲(chǔ) 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對(duì)數(shù)據(jù)庫(kù)性能來(lái)說(shuō),不僅僅是看記錄數(shù)量,更主要的還得看占用磁盤(pán)洞李頌空間大小??臻g大了,所有以前的經(jīng)驗(yàn)啥的都失效了。
所以一般來(lái)說(shuō)存放這類(lèi)信息,也就是存儲(chǔ)他們的存放路徑,至于文件本身存放在哪里,那這就不是數(shù)據(jù)庫(kù)考慮的范疇了。數(shù)據(jù)庫(kù)只關(guān)心怎么來(lái)的快,怎么來(lái)的小。
舉例
雖然不推薦 MySQL 這樣做,但是也得知道 MySQL 該怎么做才行,做到心里有數(shù)。比如下面一張微信圖片,大概 5M 的樣子。
root@ytt:/var/lib/mysql-files# ls -sihl 微信圖片_.jpg.4M -rw-r–r– 1 root root 5.4M Jul 11 07:17 微信圖片_.jpg
拷貝 100 份這樣的圖片來(lái)測(cè)試
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信圖片_.jpg “$i”.jpg;done;
root@ytt:/var/lib/mysql-files# ls
100.jpg 17.jpg 25.jpg 33.jpg 41.jpg 4.jpg 58.jpg 66.jpg 74.jpg 82.jpg 90.jpg 99.jpg f8.tsv
10.jpg 18.jpg 26.jpg 34.jpg 42.jpg 50.jpg 59.jpg 67.jpg 75.jpg 83.jpg 91.jpg 9.jpg 微信圖片_.jpg
1111.jpg 19.jpg 27.jpg 35.jpg 43.jpg 51.jpg 5.jpg 68.jpg 76.jpg 84.jpg 92.jpg f1.tsv
11.jpg 1.jpg 28.jpg 36.jpg 44.jpg 52.jpg 60.jpg 69.jpg 77.jpg 85.jpg 93.jpg f2.tsv
12.jpg 20.jpg 29.jpg 37.jpg 45.jpg 53.jpg 61.jpg 6.jpg 78.jpg 86.jpg 94.jpg f3.tsv
13.jpg 21.jpg 2.jpg 38.jpg 46.jpg 54.jpg 62.jpg 70.jpg 79.jpg 87.jpg 95.jpg f4.tsv
14.jpg 22.jpg 30.jpg 39.jpg 47.jpg 55.jpg 納鄭63.jpg 71.jpg 7.jpg 88.jpg 96.jpg f5.tsv
15.jpg 23.jpg 31.jpg 3.jpg 48.jpg 56.jpg 64.jpg 72.jpg 80.jpg 89.jpg 97.jpg f6.tsv
16.jpg 24.jpg 32.jpg 40.jpg 49.jpg 57.jpg 65.jpg 73.jpg 81.jpg 8.jpg 98.jpg f7.tsv
我們建三張表,分別用 LONGBLOB、LONGTEXT 和 VARCHAR 來(lái)存儲(chǔ)這些圖片信息
mysql> show create table tt_image1G
*************************** 1. row ***************************
Table: tt_image1
Create Table: CREATE TABLE `tt_image1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image2G
*************************** 1. row ***************************
Table: tt_image2
Create Table: CREATE TABLE `tt_image2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` longtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
mysql> show create table tt_image3G
*************************** 1. row ***************************
Table: tt_image3
Create Table: CREATE TABLE `tt_image3` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image_file` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)
我們來(lái)給三張表插入 100 張圖片(插入前,建議把 max_allowed_packet 設(shè)置到更大)
tt_image1
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e “insert into ytt.tt_image1(image_file)
values (load_file(‘/var/lib/mysql-files/$i.jpg’))”;done;
tt_image2
root@ytt:/var/lib/mysql-files# for i in `seq 1 100`;
do mysql -S /var/run/mysqld/mysqld.sock -e “insert into ytt.tt_image2(image_file)
values (hex(load_file(‘/var/lib/mysql-files/$i.jpg’)))”;done;
tt_image3
root@ytt:/var/lib/mysql-files# aa=’begin;’;for i in `seq 1 100`;
do aa=$aa”insert into ytt.tt_image3(image_file) values
(‘/var/lib/mysql-files/$i.jpg’);”;
done;aa=$aa’commit;’;mysql -S /var/run/mysqld/mysqld.sock -e “`echo $aa`”;
檢查下三張表記錄數(shù)
mysql> select ‘tt_image1’ as name ,count(*) from tt_image1 union allselect ‘tt_image2’,count(*) from tt_image2 union all select ‘tt_image3’, count(*) from tt_image3;+++| name | count(*) |+++| tt_image1 ||| tt_image2 ||| tt_image3 ||+++3 rows in set (0.00 sec)
看下文件大小,可以看到實(shí)際大小排名,LONGTEXT 字段存儲(chǔ)的更大,LONGBLOB 字段縮小到一半,最小的是存儲(chǔ)圖片路徑的表 tt_image3。所以這里從存儲(chǔ)空間來(lái)看,存放路徑最占優(yōu)勢(shì)。
root@ytt:/var/lib/mysql/ytt# ls -silhS tt_image*.1G -rw-rmysql mysql 1.1G Jul 11 07:27 tt_image2.ibdM -rw-rmysql mysql 544M Jul 11 07:26 tt_image1.ibdK -rw-rmysql mysql 112K Jul 11 07:27 tt_image3.ibd
那么怎么把圖片取出來(lái)呢?
tt_image3 肯定是最容易的
mysql> select * from tt_image3;+—-++| id | image_file |+—-++| 1 | /var/lib/mysql-files/1.jpg |+—-++…100 rows in set (0.00 sec)
tt_image1 直接導(dǎo)出來(lái)二進(jìn)制文件即可,下面我寫(xiě)了個(gè)存儲(chǔ)過(guò)程,導(dǎo)出所有圖片。
mysql> DELIMITER $$mysql> USE `ytt`$$mysql> DROP PROCEDURE IF EXISTS `sp_get_image`$$mysql> CREATE DEFINER=`ytt`@`localhost` PROCEDURE `sp_get_image`()mysql> BEGIN DECLARE i,cnt INT DEFAULT 0; SELECT COUNT(*) FROM tt_image1 WHERE 1 INTO cnt; WHILE i DELIMITER ;mysql> call sp_get_image;
tt_image2 類(lèi)似,把 select 語(yǔ)句里 image_file 變?yōu)?unhex(image_file) 即可。
總結(jié)
這里我舉了個(gè)用 MySQL 來(lái)存放圖片的例子,總的來(lái)說(shuō)有以下三點(diǎn):
占用磁盤(pán)空間大(這樣會(huì)帶來(lái)各種各樣的功能與性能問(wèn)題,比如備份,寫(xiě)入,讀取操作等)
使用不易
還是推薦用文件路徑來(lái)代替實(shí)際的文件內(nèi)容存放
解決方法一般有兩種:
1、將圖片保存的路徑存儲(chǔ)到數(shù)據(jù)庫(kù);
2、將圖片以二進(jìn)制數(shù)據(jù)流的形式直接寫(xiě)入數(shù)據(jù)庫(kù)字段中。
以下為具體方法:
一、保存圖片的上傳路徑到數(shù)據(jù)庫(kù):
string
uppath=””;//用于保存圖片上傳路徑
//獲取上傳圖片的文件名
string fileFullname =
this.FileUpload1.FileName;
//獲取圖片上傳的時(shí)間,以時(shí)間作棚賣(mài)為圖片的名字可以防止圖片重名
string
dataName =
DateTime.Now.ToString(“yyyyMMddhhmmss”);
//獲取圖片的文件名(不含擴(kuò)展名)
string
fileName = fileFullname.Substring(fileFullname.LastIndexOf(“\\”) +
1);
//獲取圖片擴(kuò)展名
string type =
fileFullname.Substring(fileFullname.LastIndexOf(“.”) +
1);
//判斷是否為茄戚要求的格式
if (type == “bmp” || type == “jpg” || type == “jpeg”
|| type == “gif” || type == “JPG” || type == “JPEG” || type == “BMP” || type ==
“GIF”)
{
//將圖片上傳到指定路徑的文件夾
this.FileUpload1.SaveAs(Server.MapPath(“~/upload”)
+ “\\” + dataName + “.” +
type);
//將路徑保存到變量,將該變量的值保存到數(shù)據(jù)庫(kù)相應(yīng)字段即可
uppath
= “~/upload/” + dataName + “.” +
type;
}
二、將圖片以二進(jìn)制數(shù)據(jù)流直接保存到數(shù)據(jù)庫(kù):
引用如下命名空間:
using
System.Drawing;
using System.IO;
using
System.Data.SqlClient;
設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),表中相應(yīng)的字段類(lèi)型為iamge
保存:
//圖片路徑
string
strPath = this.FileUpload1.PostedFile.FileName.ToString
();
//讀取圖片
FileStream fs = new System.IO.FileStream(strPath,
FileMode.Open, FileAccess.Read);
BinaryReader br = new
BinaryReader(fs);
byte photo =
br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
//存入
SqlConnection
myConn = new SqlConnection(“Data Source=.;Initial Catalog=stumanage;User
ID=sa;Password=123″);
string strComm = ” INSERT INTO
stuInfo(stuid,stuimage) VALUES(107,@photoBinary
)”;//操作數(shù)據(jù)庫(kù)語(yǔ)句根據(jù)需要修改
SqlCommand myComm = new SqlCommand(strComm,
myConn);
myComm.Parameters.Add(“@photoBinary”, SqlDbType.Binary,
photo.Length);
myComm.Parameters.Value =
photo;
myConn.Open();
if (myComm.ExecuteNonQuery() >
0)
{
this.Label1.Text =
“ok”;
}
myConn.Close();
讀?。侯澓土?/p>
…連接數(shù)據(jù)庫(kù)字符串省略
mycon.Open();
SqlCommand
command = new
SqlCommand(“select stuimage from stuInfo where stuid=107”,
mycon);//查詢(xún)語(yǔ)句根據(jù)需要修改
byte image = (byte)command.ExecuteScalar
();
//指定從數(shù)據(jù)庫(kù)讀取出來(lái)的圖片的保存路徑及名字
string strPath =
“~/Upload/zhangsan.JPG”;
string strPhotoPath =
Server.MapPath(strPath);
//按上面的路徑與名字保存圖片文件
BinaryWriter bw = new
BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
bw.Write(image);
bw.Close();
//顯示圖片
this.Image1.ImageUrl
= strPath;
在數(shù)據(jù)庫(kù)里存圖片的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于在數(shù)據(jù)庫(kù)里存圖片,數(shù)據(jù)庫(kù)儲(chǔ)存圖片,簡(jiǎn)單高效的圖像存儲(chǔ)方案推薦,親啊我怎么把圖片存入到數(shù)據(jù)庫(kù)呢,然后再顯示出來(lái),怎么在sql數(shù)據(jù)庫(kù)中存放圖片,如何將圖片儲(chǔ)存在MySQL數(shù)據(jù)庫(kù)里?的信息別忘了在本站進(jìn)行查找喔。
創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)公司提供專(zhuān)業(yè)的建站服務(wù),為您量身定制,歡迎來(lái)電(028-86922220)為您打造專(zhuān)屬于企業(yè)本身的網(wǎng)絡(luò)品牌形象。
成都創(chuàng)新互聯(lián)品牌官網(wǎng)提供專(zhuān)業(yè)的網(wǎng)站建設(shè)、設(shè)計(jì)、制作等服務(wù),是一家以網(wǎng)站建設(shè)為主要業(yè)務(wù)的公司,在網(wǎng)站建設(shè)、設(shè)計(jì)和制作領(lǐng)域具有豐富的經(jīng)驗(yàn)。
新聞名稱(chēng):數(shù)據(jù)庫(kù)儲(chǔ)存圖片,簡(jiǎn)單高效的圖像存儲(chǔ)方案推薦(在數(shù)據(jù)庫(kù)里存圖片)
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/dpcojhp.html


咨詢(xún)
建站咨詢(xún)
