MySQL为何无法存储图片(mysql不能保存图片吗)

MySQL为何无法存储图片?

MySQL是一种关系型数据库管理系统,被广泛使用于网站开发中。然而,对于一些开发者来说,可能会发现MySQL并不能够直接存储图片。这是为什么呢?

我们需要了解MySQL的存储格式。MySQL数据的存储格式可以用二进制文件存储。只有在需要的时候才会将其转化为普通字符格式进行显示。而图片则不同,它们需要被存储为二进制格式,并且需要进行压缩。此外,图像文件的体积通常很大,如果将它们直接存储到MySQL中,会极大的影响数据库的存储和读取效率。

我们还需要考虑到安全性问题。如果将图片直接存储到MySQL中,可能会导致应用程序容易遭到攻击。如SQL注入等黑客攻击技术可以通过上传恶意图片来攻击系统,给系统带来安全隐患。

所以,对于存储图片这一问题,有一些解决方案。其中一种方式是,将图片存储到服务器的磁盘中,然后将图片在MySQL中的地址存储到数据库中。可用代码实现如下:

“`php

$photo = addslashes(file_get_contents($_FILES[‘picture’][‘tmp_name’]));

$sql = “INSERT INTO photos (photo) VALUES (‘$photo’)”;


上述代码将把从表单中上传的图片存到一个PHP变量中,并使用 addslashes() 转义字符串,在SQL语句中插入该值。

或者,借助第三方工具或云存储服务来上传和存储图片,然后通过数据库中存储的图片的URL来获取相应的图片。这种方式可以提高效率,也可以减少安全隐患。可用代码实现如下:

```php

$savename = date('YmdHis') . rand(1000, 9999) . '.jpg';
$up_path = 'upfiles/';
if (!file_exists($up_path)) {
mkdir($up_path, 0777, true);
}
$save_path = $up_path . $savename;
move_uploaded_file($_FILES['picture']['tmp_name'], $save_path);
$url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.$save_path;
$sql = "INSERT INTO photos (url) VALUES ('$url')";

上述代码将上传的图片存储到服务器的指定目录,“$url”则为图片在服务器中的地址。

MySQL并不是一个适合存储图片的数据库,但通过使用上述解决方案,我们仍然可以在网站开发中存储和管理大量的图片资源。


数据运维技术 » MySQL为何无法存储图片(mysql不能保存图片吗)