здесь я пытаюсь загрузить изображение профиля сотрудника в 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).
мой вопрос – как правильно получить изображение? и тогда есть ли другой способ сделать копию изображения в 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"; } ?>
в<? 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"; } ?>
Можете ли вы попробовать это,
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']) . '" />'; }
проверьте размер столбца, в котором вы сохраняете содержимое файла. Вероятная причина для меня, что вы не можете получить изображения, может заключаться в том, что данные обрезаются из-за ограничения по размеру столбца. Попробуйте увеличить размер столбца и при необходимости изменить тип данных. Вы можете попробовать тип данных longblob.
Инкапсулировать оператор 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 } ?>
в<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 } ?>
Вам нужно, чтобы он отображался в HTML как тег img.
Вы должны рассмотреть возможность сохранения изображения в каталоге на сервере и сохранения имени / местоположения изображения в базе данных. Затем создайте тег img.
вы должны сохранить изображение в папке и переименовать уникальное имя файла вместе с расширением.
и сохранить имя файла в таблице базы данных 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"; } ?>
в<? 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; }