Отображение нескольких изображений, отображающих BLOB из mysql в теге img - PullRequest
0 голосов
/ 26 июня 2019

Я конвертировал изображения в двоичный файл и сохранял их в формате BLOB в базе данных Mysql. Теперь я пытаюсь отобразить все изображения разных типов MIME. Я пробовал много раз с различными предложениями (stackoverflow) и искал по другим сетям также. Но по-прежнему не удается отобразить изображения.

Для этого я использовал сервер LAMP с Core PHP (PHP 7.1) и MySql 5.6 в качестве базы данных. Чтобы преобразовать изображения в двоичные файлы:

function data_uri($file, $mime) 
{  
$contents = file_get_contents($file);
$base64   = base64_encode($contents); 
return ('data:' . $mime . ';base64,' . $base64);
}

Чтобы сохранить этот двоичный файл в БД:

$filename=array("file.jpg","file 22.png","file 11.png","file 1.jpg");
foreach ($filename as $value) {  
$pos = strrpos($value, '.');
$extensions= substr($value, $pos+1);   
if($extensions=='jpg'){
$ext='image/jpg';
$imageData= data_uri('./downloads/'.$value,$ext);
}
if($extensions=='png'){
$ext='image/png'; 
$imageData= data_uri('./downloads/'.$value,$ext);            
}
$sql1="INSERT INTO image(name,binary_image,extension) 
VALUES('".$value."','".$imageData."','".$ext."') ";
$rt=$conn->query($sql1);          
}

Для доступа к данным из базы данных в показе изображений на экране:

$sql="SELECT * FROM image";
$res=$conn->query($sql);
if($res->num_rows >0){
while($row=$res->fetch_assoc()){
$filenam= $row['name'];
$binaryData= explode(',',$row['binary_image']);
$extens= $row['extension'];
//echo '<img src="data:image/jpeg;base64,'.$binaryData[1].'" alt="photo"> 
<br>';
?>
<img src="<?=$binaryData[0].','. $binaryData[1] ?>" />
<?php  }
}

Поврежденные изображения с двоичными данными

1 Ответ

0 голосов
/ 26 июня 2019

Вы должны зациклить для каждого изображения:

<?php

$sql="SELECT * FROM image";
$res=$conn->query($sql);
if($res->num_rows >0){
while($row=$res->fetch_assoc()){

    $filenam= $row['name'];
    $binaryData= explode(',',$row['binary_image']);
    $extens= $row['extension'];


    for ($i = 0; $i < count($binaryData); $i++){
        echo '<img src="data:image/jpeg;base64,'.$binaryData[$i].'" alt="photo"><br>';
    }



    }
}

?>
...