老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

怎么保存圖片到mysql,怎么保存圖片到電腦上

如何將圖片儲存在MySQL數據庫里?

解決方法一般有兩種:

成都創新互聯公司是專業的敦化網站建設公司,敦化接單;提供成都網站設計、成都網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行敦化網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

1、將圖片保存的路徑存儲到數據庫;

2、將圖片以二進制數據流的形式直接寫入數據庫字段中。

以下為具體方法:

一、保存圖片的上傳路徑到數據庫:

string

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

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

string fileFullname =

this.FileUpload1.FileName;

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

string

dataName =

DateTime.Now.ToString("yyyyMMddhhmmss");

//獲取圖片的文件名(不含擴展名)

string

fileName = fileFullname.Substring(fileFullname.LastIndexOf("\\") +

1);

//獲取圖片擴展名

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);

//將路徑保存到變量,將該變量的值保存到數據庫相應字段即可

uppath

= "~/upload/" + dataName + "." +

type;

}

二、將圖片以二進制數據流直接保存到數據庫:

引用如下命名空間:

using

System.Drawing;

using System.IO;

using

System.Data.SqlClient;

設計數據庫時,表中相應的字段類型為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

)";//操作數據庫語句根據需要修改

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();

讀取:

...連接數據庫字符串省略

mycon.Open();

SqlCommand

command = new

SqlCommand("select stuimage from stuInfo where stuid=107",

mycon);//查詢語句根據需要修改

byte[] image = (byte[])command.ExecuteScalar

();

//指定從數據庫讀取出來的圖片的保存路徑及名字

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;

采用這兩種方式可以根據實際需求靈活選擇。

mysql里怎么存放圖片

你好,很高興回答你的問題。

一般有兩種方式,

一種是將圖片序列化后,將序列化的結果存入數據庫中。使用時在讀出進行反序列化。

另一種是將文件存放到一個位置,將存放的路徑存入數據庫。使用時按照路徑獲取圖片。

如果有幫助到你,請點擊采納。

請問在mysql中怎么存儲圖片呢?

背景

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

假設用 MySQL 來存放電影視頻等信息,一部是 2G,那么存儲 1000 部就是 2TB,2TB 也就是 1000 條記錄而已,但是對數據庫性能來說,不僅僅是看記錄數量,更主要的還得看占用磁盤空間大小。空間大了,所有以前的經驗啥的都失效了。

所以一般來說存放這類信息,也就是存儲他們的存放路徑,至于文件本身存放在哪里,那這就不是數據庫考慮的范疇了。數據庫只關心怎么來的快,怎么來的小。

舉例

雖然不推薦 MySQL 這樣做,但是也得知道 MySQL 該怎么做才行,做到心里有數。比如下面一張微信圖片,大概 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 份這樣的圖片來測試

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 來存儲這些圖片信息

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)

我們來給三張表插入 100 張圖片(插入前,建議把 max_allowed_packet 設置到最大)

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`";

檢查下三張表記錄數

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)

看下文件大小,可以看到實際大小排名,LONGTEXT 字段存儲的最大,LONGBLOB 字段縮小到一半,最小的是存儲圖片路徑的表 tt_image3。所以這里從存儲空間來看,存放路徑最占優勢。

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

那么怎么把圖片取出來呢?

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 直接導出來二進制文件即可,下面我寫了個存儲過程,導出所有圖片。

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 語句里 image_file 變為 unhex(image_file) 即可。

總結

這里我舉了個用 MySQL 來存放圖片的例子,總的來說有以下三點:

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

使用不易

還是推薦用文件路徑來代替實際的文件內容存放


標題名稱:怎么保存圖片到mysql,怎么保存圖片到電腦上
文章URL:http://www.xueling.net.cn/article/hdgpid.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 日韩视频一区二区在线观看 | 少妇人妻无码永久免费视频 | 亚洲一区二区三区小说 | 无码专区丰满人妻斩六十路 | 国产精品视频一区二区免费不卡 | 国产字幕制服中文在线 | 亚洲国产精品综合小说图片区 | 日本一级淫片1000部 | 国产在线观看免费视频在线 | 欧美真人性做爰一二区 | 亚洲第一精品夜夜躁人人爽 | 亚洲成人久久久久 | 91久久久爱一区二区三区 | 久久五十路丰满熟女中出 | 午夜小片| 国产AV无码专区亚洲AV中文 | 麻豆蜜桃AV蜜臀AV色欲AV | 国产女主播喷水视频在线观看 | 亚洲AV无码A片在线观看蜜桃 | 91麻豆精品一区二区三区 | 91视频-全网资源最全平台 | 国产成人亚洲综合a∨婷婷图片 | 97国产色 | 国产精品美女久久久浪潮软件 | 亚洲精品无码AV人在线观看 | 亚洲中文字幕永久在线天堂 | 日本人妻出轨中文字幕 | 亚洲日韩爆乳中文字幕欧美 | 好硬好湿好爽再深一点动态图片 | 国产乱码一区二区三区在线观看 | 亚洲美女视频在线 | 国产精品入口夜色视频大尺度 | 欧日一级片 | 巨大垂乳日本熟妇 | 亚洲免费a在线观看 | 国产乱子伦精品免费女 | 一本一本久久aa精品综合 | 大地资源网高清在线播放 | 鲍鱼av | 亚洲高清国产拍精品影院 | 国产三级Av一区二区三区 |