11
2024
09
10:34:55

如何将图片保存至SQL数据库? (把图片保存在sql数据库)



随着科技的发展,越来越多的商家和个人希望将图片、视频等多媒体文件保存在SQL数据库中,以便于管理和查询。那么如何才能将图片保存至SQL数据库呢?本文将介绍几种常见的方法。

方法一:二进制方式保存

将图片转换为二进制码,并将二进制码存储在SQL数据库中。这种方法简单明了,但是存储的数据量较大,需要较大的存储空间。

首先需要创建一个保存图片的表,例如:

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)

);

然后将图片读取并转换为二进制码后,将其保存在这个表中。

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

}

方法二:将图片保存在服务器,然后在SQL数据库中保存其路径

将图片上传到服务器上,并保存其路径。在SQL数据库中保存该路径,需要时访问路径以获取图片。

这种方法的好处是,可以将图片和SQL数据库分离,避免数据量过大导致数据库卡顿。但是如果服务器崩溃,图片也随之丢失。

首先需要创建一个保存路径的表,例如:

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)

);

然后将图片上传到服务器上,记录下上传后的路径,并将路径保存在这个表中。

$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存储

存储图片时使用Blob数据类型,这种方法中,图片数据不会转换为字符串。

首先需要创建一个保存图片的表,例如:

CREATE TABLE images (

id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,

image BLOB NOT NULL

);

然后将图片转换成二进制形式,并将其保存在这个表中。

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

}

无论使用何种方法,都需要考虑图片大小、图片格式和数据量对数据库负荷的影响,合理选择方法才能更好的实现图片的存储与管理。

相关问题拓展阅读:

  • 怎么在sql数据库中存放图片

  • 怎样将图片存储到SQL数据库中

怎么在sql数据库中存放图片

把文件存入数据库 需要使用一些代码

一般不把图片直裂禅接存进数据库毕源尺

而是手高把路径放进去

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、建表和初始化数据

create table 表名 (编号 int,image列名 image)

go

insert 表名 values(1,0x)必须的,且不是null

insert 表名 values(2,0x)必须的虚羡,且不是null

go

3、读入

sp_textcopy ‘你的服务器名’,’sa’,’你的密码’,’库名’,’表名’,’image列名’,’c:\图片.bmp’,’where 编号=1′,’I’ –注意条件是 编号=1

sp_textcopy ‘你的服务器名’,’sa’,’你的密码’,’库名’,’表名’,’image列名’,’c:\bb.doc’,’where 编号=2′,’I’ –注意条件是 编号=2

go

4、读出成文件

sp_textcopy ‘你的服务器名’,’sa’,’你的密码’,’库名’,’表名’,’image列名’,’c:\图片.bmp’,’where 编号=1′,’O’ –注意条件是 编号=1

sp_textcopy ‘你的服务器名’,’sa’,’你的密码’,’库名’,’表名’,’image列名’,’c:\bb.doc’,’where 编号=2′,’O’ –注意条件是 编号=2

go

************如果报textcopy不是可执行文件的话,你就到

C:\Program Files\团誉信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中存储图片,其实不是特别困难的。

1、数据表必须有数据类型是颂此Image类型的字段,这个字段是可以存储图形的二进制数据的,存储量可达2G字节。

2、可想,存储图形二进制数据,必须就原来的图形转换为二进制数据,这是存储图形数据的关键。

3、存储的二进制图形,如果要读取,必须就二进制数据转换为图形数据。

上面是VB在SQL Server 2023中存储图片的唤滚必须要求。但是也可以在数据表存储图形的路径,这样比较简单,和樱余但是不安全,我们就以存储二进制数据讨论吧。

一、存储图形的关键语句:

Dim mst As New ADODB.Stream ‘Stream 对象是进行二进制数据操作对象

mst.Type = abTypeBinary

mst.Open

If 图片的路径和文件名变量(需要用其他方法获得)> “” Then

mst.LoadFromFile 图片的路径和文件名变量

End If

rs(“存储二进制数据的字段”) = mst.Read

二、读取存储的二进制数据的关键语句:

Dim mst As New ADODB.Stream

mst.Type = abTypeBinary

mst.Open

mst.Write rs(“存储二进制数据的字段”)

mst.SaveToFile App.Path & “/” & list1.Text,abSaveCreateOverWrite

Picture1.Picture = LoadPicture(App.Path & “/” & List1.Text)

mst.Close ‘别忘了关闭对象!

建立一个图片储存目录,只用数据库记录图片的储存路径即可。

存成image类型就可以了

怎样将图片存储到SQL数据库中

可以用数据类型设置为image

但是本人认为存储图片到数据库里,有点慢,本人实际一般都是把图片复制到一个公共文件夹里,然后按照一定规则起名字,再把存储路径保存到数据库里,调用的时候把路径给图片控件给他就可以了,感觉能快点只是个人想法





推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/7938.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: