为什么使用PHP上传的图像未在longblob中正确存储

时间:2015-12-10 07:09:50

标签: 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

  • 它是数据库表中的长blob类型

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

版本

  • wamp:2.5
  • apache:2.4.9
  • mysql:5.6.17
  • php:5.5.12

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

enter image description here

1 个答案:

答案 0 :(得分:3)

tmp_name是文件的临时路径,这就是为什么你只看到几个字节。

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

通常isn't a great idea将blob存储在数据库中,最好存储路径(就像你现在正在做的那样)。如果选择路径路径,则需要使用move_uploaded_file之类的内容将文件移动到持久位置。