欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

圖片怎么存到mysql表,mysql數(shù)據(jù)庫(kù)如何存儲(chǔ)圖片

如何將圖片儲(chǔ)存在MySQL數(shù)據(jù)庫(kù)里

通常對(duì)用戶上傳的圖片需要保存到數(shù)據(jù)庫(kù)中。解決方法一般有兩種:一種是將圖片保存的路徑存儲(chǔ)到數(shù)據(jù)庫(kù);另一種是將圖片以二進(jìn)制數(shù)據(jù)流的形式直接寫入數(shù)據(jù)庫(kù)字段中。以下為具體方法:

創(chuàng)新互聯(lián)公司專注于保靖網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供保靖營(yíng)銷型網(wǎng)站建設(shè),保靖網(wǎng)站制作、保靖網(wǎng)頁(yè)設(shè)計(jì)、保靖網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造保靖網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供保靖網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

一、保存圖片的上傳路徑到數(shù)據(jù)庫(kù):

string uppath="";//用于保存圖片上傳路徑

//獲取上傳圖片的文件名

string fileFullname = this.FileUpload1.FileName;

//獲取圖片上傳的時(shí)間,以時(shí)間作為圖片的名字可以防止圖片重名

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)的字段類型為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["@photoBinary"].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);//查詢語(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;

采用倆種方式可以根據(jù)實(shí)際需求靈活選擇。

請(qǐng)問在mysql中怎么存儲(chǔ)圖片呢?

背景

MySQL 一直以來(lái)都有 TEXT、BLOB 等類型用來(lái)存儲(chǔ)圖片、視頻等大對(duì)象信息。比如一張圖片,隨便一張都 5M 以上。視頻也是,隨便一部視頻就是 2G 以上。

假設(shè)用 MySQL 來(lái)存放電影視頻等信息,一部是 2G,那么存儲(chǔ) 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對(duì)數(shù)據(jù)庫(kù)性能來(lái)說,不僅僅是看記錄數(shù)量,更主要的還得看占用磁盤空間大小??臻g大了,所有以前的經(jīng)驗(yàn)啥的都失效了。

所以一般來(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 微信圖片_20190711095019.jpg274501 5.4M -rw-r--r-- 1 root root 5.4M Jul 11 07:17 微信圖片_20190711095019.jpg

拷貝 100 份這樣的圖片來(lái)測(cè)試

root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信圖片_20190711095019.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 ? 微信圖片_20190711095019.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 | ? ? ?100 || tt_image2 | ? ? ?100 || tt_image3 | ? ? ?100 |+-----------+----------+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*274603 1.1G -rw-r----- 1 mysql mysql 1.1G Jul 11 07:27 tt_image2.ibd274602 545M -rw-r----- 1 mysql mysql 544M Jul 11 07:26 tt_image1.ibd274605 ?80K -rw-r----- 1 mysql 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)制文件即可,下面我寫了個(gè)存儲(chǔ)過程,導(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 cnt DO ? ? ? ?SET @stmt = CONCAT('select image_file from tt_image1 ?limit ',i,',1 into dumpfile ''/var/lib/mysql-files/image',i,'.jpg'''); ? ? ? ?PREPARE s1 FROM @stmt; ? ? ? ?EXECUTE s1; ? ? ? ?DROP PREPARE s1; ? ? ?SET i = i + 1; ? ? ?END WHILE; ? ? ?END$$mysql DELIMITER ;mysql call sp_get_image;

tt_image2 類似,把 select 語(yǔ)句里 image_file 變?yōu)?unhex(image_file) 即可。

總結(jié)

這里我舉了個(gè)用 MySQL 來(lái)存放圖片的例子,總的來(lái)說有以下三點(diǎn):

占用磁盤空間大(這樣會(huì)帶來(lái)各種各樣的功能與性能問題,比如備份,寫入,讀取操作等)

使用不易

還是推薦用文件路徑來(lái)代替實(shí)際的文件內(nèi)容存放

有誰(shuí)知道如何把一圖片存放到mysql數(shù)據(jù)庫(kù)中

一般沒有人這么做的,因?yàn)閳D片文件一般都比較大。試想一下你的一個(gè)圖片大小為20KB,你有5000張這樣的圖片,那你的要消耗的就是100MB,而存放到數(shù)據(jù)庫(kù)的大小肯定超過100MB,而且數(shù)據(jù)庫(kù)對(duì)圖片的提取對(duì)系統(tǒng)的消耗是很大的。

建議的做法是用一個(gè)字符串存儲(chǔ)圖片的路徑,當(dāng)然你還可以通天其他字段寫上圖片的大小啊什么的屬性。如:表名為image img_id int(8) unsigned;img_dir varchar(100);img_weight float(6);img_height float(6);這樣你就可以通過查詢這幾個(gè)字符串從而得到圖片了。

如果你非要用數(shù)據(jù)庫(kù)保存的話,mysql好像也確實(shí)提供了可以存儲(chǔ)圖片的格式,具體什么去查一下mysql幫助文檔吧,我也既不清楚了。

GOOD LUCK?。。?/p>

本文標(biāo)題:圖片怎么存到mysql表,mysql數(shù)據(jù)庫(kù)如何存儲(chǔ)圖片
文章地址:http://aaarwkj.com/article40/dssghho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)品牌網(wǎng)站設(shè)計(jì)、服務(wù)器托管、靜態(tài)網(wǎng)站、自適應(yīng)網(wǎng)站、網(wǎng)頁(yè)設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
av天堂午夜在线观看| 四虎在线经典视频播放| 精品人妻av中文字幕乱| 日韩高清不卡在线视频| 国产av一区二区三区日韩接吻| 国产日韩欧美一区二区三区四区| 久久婷婷欧美激情综合| 免费激情在线视频网址| 免费在线免费观看av| 亚洲奇米精品一区二区| 一区二区三区免费在线观看视频| 日本高清一区二区高清| 亚洲禁看av一区不卡| 亚洲av资源一区二区| 国产女主播在线观看视频| 极品丝袜美腿一区二区| 精品裸足人妻少妇二区三区| 毛片一区二区三区免费看| 日本精品动漫一区二区三区| 中文字幕一区二区av| 中文字幕人妻在线播放| 久久亚洲天堂av丁香| 日本师生三片在线观看| 丰满人妻中出av在线| 十八禁无遮挡污污污网站| 亚洲黄色av在线免费观看| 亚洲精品国产熟女av| 国产一区二区欧美久久| 亚洲女人淫片在线观看| 亚洲黄色成人免费观看| 国产日产亚洲欧美综合另类| 日本在线免费成人高清| 毛片精品一区二区二区三区| 日韩精品一区二区视频| 性知音国产精品粉色视频| 国产原创av剧情在线播放| 日本人妻系列在线播放| 欧美日韩综合在线第一页| 曰韩精品一区二区三区乱码| 日本免费一区二区三区手机在线| av中文字幕熟妇人妻少妇|