日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在MySQL數(shù)據(jù)庫中儲存圖片路徑?(mysql數(shù)據(jù)庫中怎樣存圖片路徑)

在現(xiàn)代的Web應(yīng)用程序開發(fā)中,我們需要經(jīng)常處理圖像和其他類型的媒體文件。 儲存圖片文件的路徑信息,在MySQL數(shù)據(jù)庫中,是一種頗有用的技巧。在本篇文章中,我們將討論如何在MySQL數(shù)據(jù)庫中儲存圖片路徑。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),江孜企業(yè)網(wǎng)站建設(shè),江孜品牌網(wǎng)站建設(shè),網(wǎng)站定制,江孜網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,江孜網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

為什么要儲存圖片路徑?

在許多現(xiàn)代的Web應(yīng)用程序中,開發(fā)人員經(jīng)常需要儲存用戶上傳的圖片和其他類型的媒體文件。 但是,將媒體文件的實(shí)際內(nèi)容儲存在數(shù)據(jù)庫中,會大大降低數(shù)據(jù)庫的性能。

相反,一種好的解決方案是,儲存文件的路徑信息到數(shù)據(jù)庫中。儲存文件路徑的好處在于,我們可以輕松地根據(jù)路徑信息來檢索和讀取對應(yīng)的媒體文件。

那么,我們需要如何在MySQL數(shù)據(jù)庫中儲存文件路徑呢?

儲存文件路徑的SQL架構(gòu)

我們需要為文件路徑創(chuàng)建一個單獨(dú)的表,該表將儲存路徑信息和其他重要的元數(shù)據(jù)。以下是我們將使用的SQL架構(gòu):

CREATE TABLE `images` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`file_name` varchar(255) NOT NULL,

`file_path` varchar(255) NOT NULL,

`file_type` varchar(255) NOT NULL,

`file_size` int(11) NOT NULL,

`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

如上所示,我們創(chuàng)建了一個名為“images”的表,它包含以下列:

– ID:唯一標(biāo)識符,自動遞增。

– file_name:文件名,是上傳時指定的文件名。

– file_path:相對于Web根目錄的文件路徑。

– file_type:文件類型,是MIME類型的字符串。

– file_size:文件大小,以字節(jié)為單位。

– created:文件的創(chuàng)建時間戳。

將文件路徑插入MySQL數(shù)據(jù)庫

接下來,讓我們看看如何將文件路徑插入到我們剛剛創(chuàng)建的“images”表中。

例如,我們在上傳圖片時,使用適當(dāng)?shù)腤eb框架和腳本庫將圖片的路徑作為字符串儲存在數(shù)據(jù)庫中。

為了演示這個過程,我們可以使用常見的PHP腳本,以上傳圖片并將路徑信息存儲在數(shù)據(jù)庫中。以下是我們可以使用的PHP代碼:

// Check if the form has been submitted

if (isset($_POST[‘submit’])) {

// Retrieve file information

$file_tmp_name = $_FILES[“file”][“tmp_name”];

$file_name = $_FILES[“file”][“name”];

$file_size = $_FILES[“file”][“size”];

$file_type = $_FILES[“file”][“type”];

// Open and read the file

$file = fopen($file_tmp_name, ‘r’);

$file_contents = fread($file, $file_size);

fclose($file);

// Escape the file contents

$file_contents = mysqli_real_escape_string($conn, $file_contents);

// Insert the file information into the images table

$sql = “INSERT INTO images (file_name, file_path, file_type, file_size) VALUES (‘$file_name’, ‘/path/to/images/$file_name’, ‘$file_type’, $file_size)”;

if (mysqli_query($conn, $sql)) {

echo “File uploaded successfully.”;

} else {

echo “Error uploading file: ” . mysqli_error($conn);

}

}

?>

在上面的代碼中,我們使用了“$_FILES”數(shù)組來提取所上傳文件的詳細(xì)信息,并使用mysqli_real_escape_string()函數(shù),對文件內(nèi)容進(jìn)行轉(zhuǎn)義,以避免SQL注入攻擊。 我們使用INSERT語句將文件信息插入到我們剛剛創(chuàng)建的“images”表中。

讀取MySQL中的儲存路徑

既然我們已經(jīng)將文件路徑信息存儲在MySQL數(shù)據(jù)庫中,我們現(xiàn)在可以輕松地讀取這些信息,并通過鏈接到文件路徑來檢索實(shí)際的媒體文件。 比如我們可以使用以下的PHP代碼讀取儲存文件路徑的MySQL數(shù)據(jù)表:

// Query the images table for the file path

$sql = “SELECT file_path FROM images WHERE id = $id”;

// Execute the query and retrieve the file path

$result = mysqli_query($conn, $sql);

$row = mysqli_fetch_assoc($result);

$file_path = $row[‘file_path’];

// Build the image tag

echo ‘‘;

?>

在上述示例代碼中,我們查詢“images”表以檢索指定id的文件路徑,然后將該路徑用作image標(biāo)簽的src屬性中,以在Web頁面上顯示圖像。

在Web應(yīng)用程序開發(fā)中,處理媒體文件是必不可少的,使用MySQL數(shù)據(jù)庫儲存文件路徑是一種有效的解決方案,可以提高Web應(yīng)用程序的性能并降低存儲成本。實(shí)現(xiàn)此目標(biāo)的過程大致可以分為三個步驟:創(chuàng)建表格和SQL架構(gòu)、插入文件路徑信息和讀取數(shù)據(jù)庫中儲存的路徑。通過這些步驟,我們可以實(shí)現(xiàn)可靠和高效地處理圖像和其他類型媒體文件的Web應(yīng)用程序。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!

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

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

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

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

GOOD LUCK!?。?/p>

打開圖片文件–>讀取到流中–>序列山歷輪化–>壓縮–>關(guān)閉–>寫入數(shù)爛叢據(jù)庫(二進(jìn)制類型字段)

取出來的:讀數(shù)據(jù)庫(存取圖片字段)–>逗信解壓–>反序列化–>顯示(或存入文件)

背景

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

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

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

舉例

雖然不推薦 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 份這樣的圖片來測試

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

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 設(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 字段存儲的更大,LONGBLOB 字段縮小到一半,最小的是存儲圖片路徑的表 tt_image3。所以這里從存儲空間來看,存放路徑最占優(yōu)勢。

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

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

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)出來二進(jìn)制文件即可,下面我寫了個存儲過程,導(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 類似,把 select 語句里 image_file 變?yōu)?unhex(image_file) 即可。

總結(jié)

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

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

使用不易

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

sql數(shù)據(jù)庫中如何存放圖片相對路徑(不用代碼)

1、在打開【SQL Server Managemenet Studio】窗口,在【對象

資源管理器

】窗口依次站看【數(shù)據(jù)庫】——【新建的數(shù)據(jù)庫】節(jié)點(diǎn)。

2、鼠標(biāo)右鍵單擊【視圖】節(jié)點(diǎn),在彈出的快捷菜單中選擇【新建視圖】命令。

3、從【添加表】對話框中選擇建立新視圖的基表,視圖和函數(shù)。

4、根據(jù)新建視圖的需要,從表中選擇視或世圖引用的列??梢栽訇P(guān)系圖中選中相應(yīng)表的相應(yīng)列左邊的

復(fù)選框

來完成毀逗。

5、最后,在【視圖設(shè)計(jì)器】窗口中單擊工具欄中的【驗(yàn)纖團(tuán)賣證SQL語法】,按鈕檢查T-SQL語法。確認(rèn)語法正確后,單擊【執(zhí)行 SQL】按鈕預(yù)覽視圖返回的結(jié)果。

關(guān)于mysql數(shù)據(jù)庫中怎樣存圖片路徑的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220


網(wǎng)頁題目:如何在MySQL數(shù)據(jù)庫中儲存圖片路徑?(mysql數(shù)據(jù)庫中怎樣存圖片路徑)
本文網(wǎng)址:http://www.dlmjj.cn/article/cccsgcd.html