2013-12-02 3 views
0

здесь я пытаюсь загрузить изображение профиля сотрудника в mysql, а затем я хочу получить это изображение. теперь я могу загрузить изображение в mysql db успешно, но, когда я пытаюсь получить изображение, которое не получается правильно. если вы откроете образ в текстовом редакторе, как он будет выглядеть? то же самое, что я получил это сейчас .. как это ... (QÕf0 ± Ó% "÷ YúEûVÚo¾e9 ° R} È"! 5®? • Ÿ \ ¯ž> ÃÕîYU0T³¼'œ \ aVë% z € ÙBðŒÆnPÈ Qx • eú0' ÁPÁ "· = ó-) Oyá + × ½ÄS" ÞšÅS! Y¨;, ¾¤ª5HÅÓôÍó3Áº¶j/"5 ± • RX> ee. & {+ C~ H CÌai, F + Ô #"? Ì8 «« IРO % IW).fetch изображение из mysql php

Мой вопрос заключается в том, как правильно получить изображение, а затем есть ли другой способ сохранить изображение в mysql db. Например, сохранить изображения профиля сотрудника в одну папку, а затем сохранить эту ссылку для MySQL ??? код

index.php:

<form enctype="multipart/form-data" action="img.php" method="post" name="changer"> 
<input name="image" accept="image/jpeg" type="file"> 
<input value="Submit" type="submit"> 
</form> 
<?php 
include("config.php"); 
$query = mysql_query("SELECT * FROM tbl_images"); 
while($row = mysql_fetch_array($query)) 
{ 
    echo "" . $row['image'] . ""; 
} 
?> 

img.php гр ода:

<? 
include("config.php"); 
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

    $tmpName = $_FILES['image']['tmp_name']; 

    $fp  = fopen($tmpName, 'r'); 
    $data = fread($fp, filesize($tmpName)); 
    $data = addslashes($data); 
    fclose($fp); 

    $query = "INSERT INTO tbl_images "; 
    $query .= "(image) VALUES ('$data')"; 
    $results = mysql_query($query, $link) or die(mysql_error()); 

    print "Thank you, your file has been uploaded."; 

    } 
    else { 
    print "No image selected/uploaded"; 
    } 
?> 

ответ

5

Вы можете попробовать это,

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

Ваш код:

while($row = mysql_fetch_array($query)) 
{ 
    echo '<img src="data:image/png;base64,' . base64_encode($row['image']) . '" />'; 
} 
1

Инкапсулируйте заявление echo в <img> теги

<form enctype="multipart/form-data" action="img.php" method="post" name="changer"> 
<input name="image" accept="image/jpeg" type="file"> 
<input value="Submit" type="submit"> 
</form> 
<?php 
include("config.php"); 
$query = mysql_query("SELECT * FROM tbl_images"); 
while($row = mysql_fetch_array($query)) 
{ 
    echo "<img src=". $row['image'] . "/>"; // Do like this 
} 
?> 
1

Вам нужно, чтобы оно отображалось в HTML как тег img.

Вы должны рассмотреть возможность хранения изображения в каталоге на сервере и сохранения имени/местоположения изображения в базе данных. Затем создайте тег img.

2

, пожалуйста, проверьте размер столбца, в котором вы сохраняете содержимое файла. Вероятная причина для меня, что вы не можете получить изображения, может заключаться в том, что данные обрезаются из-за ограничения по размеру столбца. Попробуйте увеличить размер столбца и при необходимости изменить тип данных. Вы можете попробовать тип данных longblob.

1

необходимо сохранить изображение в папке и переименовать уникальное имя файла вместе с расширением.

и хранить имя файла в таблице базы данных mysql. Я думаю, что данный код вам поможет.

<? 
include("config.php"); 
if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

    $tmpName = $_FILES['image']['tmp_name']; 

$filename = $_FILES['image']['name']; 
$ext = getExtension($filename); 
$new_file = "uniquename_of_file.".$ext; // you can generate unique name by any way you want. 

move_uploaded_file($_FILES['image']['tmp_name'],$DESTINATION_FOLDER."/".$new_file; // upload file to the destination folder with new name 

    $query = "INSERT INTO tbl_images "; 
    $query .= "(image) VALUES ('$new_file')"; 
    $results = mysql_query($query, $link) or die(mysql_error()); // insert new name into the database 

    print "Thank you, your file has been uploaded."; 

    } 
    else { 
    print "No image selected/uploaded"; 
    } 
?> 

функция получения расширения будет следующим

 function getExtension($str) { 
     $i = strrpos($str,"."); 
     if (!$i) { return ""; } 
     $l = strlen($str) - $i; 
     $ext = substr($str,$i+1,$l); 
     return $ext; 
} 
Смежные вопросы