【问题标题】:Is there any other way to store image in phpMyAdmin other than the BLOB type?除了 BLOB 类型之外,还有其他方法可以将图像存储在 phpMyAdmin 中吗?
【发布时间】:2019-12-07 11:22:14
【问题描述】:

我正在使用 phpMyAdmin,我一直在尝试将输入图像直接存储在 phpMyAdmin 上作为LARGEBLOB 类型。但是,它没有正确上传,我遇到了诸如

之类的错误

“致命错误:允许的内存大小为 134217728 字节已用尽(已尝试 分配 2182024 字节)在 D:\xampp\phpMyAdmin\libraries\classes\Error.php 在第 373 行" 或 “服务器不在。”

我很确定我将图像保持在LARGEBLOB 可以允许的分配限制 (2046KiB) 内(我正在尝试上传 1MB 的图像),但不知何故我无法以某种方式上传它。那么有没有其他方法可以将图像插入到 phpmyadmin 中?或补救措施,以便我可以继续使用LARGEBLOBs?

我看到有人回复其他人关于将图像转换为base64 并将它们作为字符串上传的帖子,但我不确定它是如何工作或如何做到的。

请对这件事有所了解。谢谢!

【问题讨论】:

  • 你没有插入到 phpmyadmin。它只是您尝试用来插入 MySQL 的工具。您的服务器设置有内存限制,它无法处理那么大的事情。通过其他方式直接连接到数据库。
  • 如果我要在数据库代码中手动插入图像并导入该代码,它会工作吗?
  • 听起来更像是一个 PHP 问题(upload_max_filesize,post_max_size,memory_limi)——但你最好只存储图像的路径,否则数据库可能会变得巨大。 Base 64 编码字符串也不会节省空间

标签: php mysql file-upload phpmyadmin xampp


【解决方案1】:

所以我考虑在我的phpMyAdmin 上使用VARCHAR 作为我的图像并在那里输入我的图像的位置(即图像/car.jpg)。并使用此代码 -

<?php
require "dbconfig.php";
$query =  $query = "SELECT * FROM images";
$result = mysqli_query($link, $query);
while ($row = mysqli_fetch_array($result)){
$image = $row['image'];
}
?>
<img class="img-fluid" src="<?php echo $picture; ?>" alt="">

我能够使用BLOB 查找图像的漏洞。但是,这不会将图像存储在数据库中,而是存储文件位置。因此,您不应丢失该文件夹。

【讨论】:

    【解决方案2】:

    不知道你为什么要上传blob图片数据到DB,好高效的方法:

    1. 上传图片到文件夹
    2. 将上传的路径保留在数据列中

    【讨论】:

    • 这是一个很好的方法,但它并不能解决 OP 的问题。 不要忘记设置文件夹权限以阻止不必要的访问
    • 谢谢,我会研究这个并试一试!
    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 2017-03-03
    • 2018-03-01
    • 1970-01-01
    • 2019-12-09
    • 2012-05-23
    • 1970-01-01
    • 2015-12-08
    相关资源
    最近更新 更多