PHP-SQL:上传的图像显示为垃圾文本

时间:2016-01-05 10:07:27

标签: php mysql image

我已经通过phpMyAdmin将图片和文字直接上传到了我的桌子。然而,当涉及到显示时,图像显示为垃圾文本。可能是什么问题?该图像是一个相对较小的jpg文件。这是代码:

<?php
    require_once 'login.php';
    $conn = new mysqli($hn, $un, $pw, $db);
    if($conn->connect_error) die($conn->connect_error);
    $query = "SELECT * from classics";
    $result = $conn->query($query);
    if(!$result) die($conn->error);

    $rows = $result->num_rows;

    for($j=0; $j < $rows; $j++) {
         $result->data_seek($j);
         $row=$result->fetch_array(MYSQLI_ASSOC);
         echo 'Cover:' .$row['sleeve'] .'<br>'; 
    }

    $result->close();
    $conn->close();
?>

2 个答案:

答案 0 :(得分:2)

你这样做是错误的。不要将图像保存在数据库中,因为这不是一个好习惯。只需将上传的图像保存在目录中,并将该图像的路径保存在数据库中。它可以节省一些数据库空间和搜索时间。

以下是一些示例代码

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
?>

请参阅http://www.w3schools.com/php/php_file_upload.asp获取帮助

答案 1 :(得分:2)

类似这样的东西,因为你的echo语句“应该”适用于你当前的实现。

//echo 'Cover:' .$row['sleeve'] .'<br>'; 
echo '<img src="data:image/jpeg;base64,'.base64_encode( $row['sleeve'] ).'"/>';

然而@Noor是正确的,存储这样的图像效率不高。