‘壹’ php 数据库图片存储问题
存储的是相对路径,可以到网站服务器上查看,应该有upload文件夹,里面就是存储的图片,这样写的好处是节省了数据库存储空间,转移的时候可以直接将整个服务器的图片打包转移。
访问的时候,前面可以拼接域名和指定的路径,这些后台可以轻松获取到,然后拼接上服务器的路径,我们就可以直接在网页上访问到图片了。
这是很常见的图片数据库保存方式,和直接把图片的二进制存入数据库,这样的方式便于检索,占用空间小。当然,目前主流都采用oss来单独存储文件了,就是有专门的文件服务器,这个时候,一般存储的是完整的图片路径。
‘贰’ 如何实现PHP上传图片,在mysql里面保存图片路径,然后在网页中显示 - 技术问答
首先是提交窗口,然后是php上传图片并且返回保存路径,最后是路径,时间等值一起insert进mysql。了解流程后自己去分段找代码,或者拿一整段代码分结构看。否则给一段完整的你也不会改
‘叁’ PHP将图片存入MYSQL并在网页中显示图片
li296985808 讲的办法是通用办法
选择一个文件夹存储图片,如d:/img/
插入图片时执行两个作业
插入数据库 sql = insert into test(filename,filesrc) values("pic1","d:/img/pic1.jpg");
将图片upload到d:/img/目录下 ,move_uploaded_file(file,"d:/img/") ,file:需要上传的文件
使用时通过读取图片的路径访问,这种办法降低数据库存储空间,缓解数据库访问压力
不明白地方请追问
‘肆’ php中,如何将图片保存到mysql中
笔者是在ubuntu环境下测试的:首先创建一个查询语句的文件
如query.sql(名字你自己取),内容大致如下:use
datebase_name;
//不解释了吧
select
xxx
from
table
where
where-condition....;
//就是一个你需要查询的语句保存好,现在开始操作:#mysql
-h
服务器ip地址
-u
用户名
-p密码
-p
端口
输出的文件名demo:
mysql
-h
127.0.0.1
-u
root
-p
1234
-p
3300
/home/michael/test.txt好了,现在你可以在对应的目录中找到你想要的文件了。
‘伍’ mysql+php存储图片及显示
?php
$keyword
=
isset($_get['keyword'])
&&
$_get['keyword']!=''
?
$_get['keyword']
:
'';
$sql
=
'select
id,author,contents
from
contents
where
contents
like"%'.$keyword.'%"
or
author
like
"%'.$keyword.'%"';
$query
=
mysql_query($sql);
$rs=mysql_query($sql);
while($row
=
mysql_fetch_array($query)){};
?
点击submit
提交form表单,使用$_get获取到搜索的内容,然后在sql语句中模糊查询。
不点击的时候获取的值为空,显示的是所有的记录。这是正常的、
‘陆’ 怎么用PHP+MYSQL+PHPMYADMIN创建保存图片的数据库有谁知道,指导一下!谢谢!
首先你的数据库里要有一张这样的数据表。
关键字段为 id,img_max_path ,img_min_path,img_size,img_info,需要其他的字段你自行加入。
PHP程序里需要一个文件上传的方法或函数,主要需求就是限制上传文件大小、上传文件为常用图片格式。
上传后文件自动改名,移动到服务器指定目录;并生成缩略图,移动到指定目录。
最后要写数据库的操作,就是将该次上传图片操作结果写进数据库。
id为主键,有新的条目时,自动累加;
img_max_path为索引,它存储的就是上传的改名原图保存的路径;
img_min_path为索引,它存储的就是生存缩略图的保存路径;
img_size,它保存的是该原图上传时的图像尺寸;
img_info,为图片的说明信息,可为空。
当然这些做好后,可以尝试扩展其他功能,如重新上传原图,全部图片缩略图浏览列表功能等。
祝你好运
‘柒’ php+mysql 图片储存和读取问题
个人意见仅供参考:
(1)一般我们都不会直接把图片存放数据库,因为这样会导致数据库迅速增长,备份和同步会变得很麻烦.
(2)图片在数据库读出效率也很低,每个页面要从服务器内存生成图片,这是不必要的开销.另外数据库的压力也变大.
(3)对于中型以上网站,这种做法意味着你连网站加速的可能性都没有.
(4)个人建议只存储图片路径.实际图片存放在某文件夹下,网站添加防盗链功能.
‘捌’ php mysql 存取图片
用base64_encode()加密,存入DB,取出的时候用base64_decode()解密.
$img_file = "路径/abc.jpg";
$img_string = base64_encode(file_get_contents($img_file));
// $img_string的值可以直接存到DB
//从DB取图片并显示出图片
$img_string = "DB里取得";
$img = base64_decode($img_string);
header("Content-type: image/jpeg");
header("Content-length: " . strlen($img));
print $img;
附:
图片的类型取得可以用getimagesize()
$size = getimagesize ($file);
$content_type = $size['mime'];
‘玖’ mysql数据库可以存图片吗
mysql数据库是可以存储图片的,操作方法:
1、具体的脚本代码如下,其中我们假定文件上传域的名称为Picture;
4、当HTML页面被浏览时,每显示一副图片就会调用一次Second.php3文件。当第二个文件被调用时会传入相应的Picture ID,我们可以借此从数据库中取回对应的图片并显示。
‘拾’ 请问在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`";
检查下三张表记录数
看下文件大小,可以看到实际大小排名,LONGTEXT 字段存储的最大,LONGBLOB 字段缩小到一半,最小的是存储图片路径的表 tt_image3。所以这里从存储空间来看,存放路径最占优势。
那么怎么把图片取出来呢?
tt_image3 肯定是最容易的
tt_image1 直接导出来二进制文件即可,下面我写了个存储过程,导出所有图片。
tt_image2 类似,把 select 语句里 image_file 变为 unhex(image_file) 即可。
总结
这里我举了个用 MySQL 来存放图片的例子,总的来说有以下三点:
占用磁盘空间大(这样会带来各种各样的功能与性能问题,比如备份,写入,读取操作等)
使用不易
还是推荐用文件路径来代替实际的文件内容存放