我已经通过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();
?>
答案 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;
}
}
?>
答案 1 :(得分:2)
类似这样的东西,因为你的echo语句“应该”适用于你当前的实现。
//echo 'Cover:' .$row['sleeve'] .'<br>';
echo '<img src="data:image/jpeg;base64,'.base64_encode( $row['sleeve'] ).'"/>';
然而@Noor是正确的,存储这样的图像效率不高。