随着科技的发展,越来越多的商家和个人希望将图片、视频等多媒体文件保存在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
但是本人认为存储图片到数据库里,有点慢,本人实际一般都是把图片复制到一个公共文件夹里,然后按照一定规则起名字,再把存储路径保存到数据库里,调用的时候把路径给图片控件给他就可以了,感觉能快点只是个人想法
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/7938.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~