php - 为什么我使用 PHP 上传的图片没有正确存储在 longblob 中

标签 php mysql image file-upload blob

我在 MySQL 数据库中存储 .JPG 图像时遇到问题。我正在使用下面的 PHP 代码将其存储到数据库中(以长 blob 形式)。我的代码似乎完全没有错误,除了图像仅存储在 PHPMyAdmin 上似乎是 36 B 大小这一事实之外,一切似乎都按预期运行。

我希望图像更大(据推测为 22 MB)。

<?php
require '../FirstWebsite/CommonFunctions.php';
DB_Connect();
$dblink = DB_Connect();
?>
<html>
<body>
    <form method="post" enctype="multipart/form-data">
        <br/>
        <input type="file" name="selectImage">
        <br/>
        <input type="submit" name="submitImage" value="submit">
    </form>
    <?php
    if(isset($_POST['submitImage'])){
        if(getimagesize($_FILES['selectImage']['tmp_name'])==FALSE){
            echo 'please select an actual image';
        }
        else{
            $getImage = mysqli_real_escape_string($dblink,                        $_FILES['selectImage']['tmp_name']);
            $name = mysqli_real_escape_string($dblink, $_FILES['selectImage']['name']);
            $image = base64_encode($getImage);
            saveImage($name, $image, $dblink);
        }
    }
    function saveImage($name, $image, $dblink){
        $query = "INSERT INTO trialtable2 (caption, actualpicture) VALUES       ('$name','$image')";
        $queryCheck = mysqli_query($dblink, $query);
        if($queryCheck == TRUE){
            echo '<br/> uploaded';
        }
        else{
            echo '<br/> not uploaded';
        }
    }
    ?>
</body>
</html>

我做了什么

  • 尝试上传.jpeg .JPG .jpg(相同但仍然......).tif .png

  • file_upload = on(或其他)已在 php.ini

  • 中打开
  • 在数据库表中是long blob类型

据说将图像存储在数据库中是行不通的,但这正是我目前正在使用的方法。

版本

  • 沼泽:2.5
  • Apache :2.4.9
  • mysql: 5.6.17
  • php: 5.5.12

我相信这个问题不是复制品,因为我无法在其他地方找到答案。如果我做错了什么,请随时告诉我,因为我还是社区的新手。

enter image description here

最佳答案

tmp_name 是文件的临时路径,这就是您只看到几个字节的原因。

  • 删除所有转义(包括 addslashes)。
  • 使用 file_get_contents($_FILES['selectImage']['tmp_name']) 获取图像的实际内容以插入数据库。

一般isn't a great idea将 blob 存储在数据库中,最好存储路径(就像您目前正在做的那样)。如果你选择走 path 路线,你需要使用类似 move_uploaded_file 的东西将文件移动到持久位置。

关于php - 为什么我使用 PHP 上传的图片没有正确存储在 longblob 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34195728/

相关文章:

php - 如何通过删除 PHP 中不是字母的任何内容来清理字符串

php - MySQL MATCH,AGAINST 不适用于 PDO

mysql - 如何从有条件的 3 个表中加入

mysql - 从不同的 ID 获取最大日期/时间

wordpress - 图像裁剪编辑器不工作

php - 获取图像尺寸

objective-c - 压缩巨大的png文件以在iphone游戏中使用

php - 从JSON问题中提取数据

php - 不掉落在其他拖动上

c# - Windows 上的 MySQL 与 PostgreSQL