У меня есть jpg-изображение, хранящееся в таблице базы данных MySql в столбце с типом данных как BLOB, что часть PHP-кода работает нормально.
Я пытаюсь отобразить это изображение, используя приведенный ниже код php, но это не сработает. Я вижу маленькую иконку на экране, которая определенно не является изображением? что не так помогает?
1) Прочитайте файл php изображения
<?php header("Content-Type: image/jpg"); $db=mysqli_connect("localhost","root","root123","deal_bank","3306"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } mysqli_select_db($db,"deal_bank"); $sql = "SELECT * FROM image"; $sth = $db->query($sql); $result=mysqli_fetch_array($sth); echo '<img src="data:image/jpg;base64,'.base64_encode( $result['image'] ).'"/>'; ?>
2) Загрузите файл в базу данных MySql
<?php $con=mysqli_connect("localhost","root","root123","deal_bank","3306"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } mysqli_select_db($con,"deal_bank"); $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] > 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { $stmt = $con->prepare('INSERT INTO image (image) VALUES (?)'); $null = null; $stmt->bind_param('b', $null); $stmt->send_long_data(0, file_get_contents($_FILES['file']['tmp_name'])); $stmt->execute(); move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; // $image = addslashes(file_get_contents($_FILE['file']['tmp_name'])); //mysqli_query($con,"INSERT INTO image (image) VALUES ('{$image}') "); } } } else { echo "Invalid file"; } ?>
Я заменил
header («Content-Type: image / jpg»);
с
ob_start ();
теперь он отлично работает, я не уверен, в чем была проблема раньше?