Попытка отобразить изображения из файловой системы в php

0

Сегодня я ищу помощь. Это мой первый раз, прошу заранее заранее, если я сделаю несколько ошибок, я пытаюсь закодировать небольшое веб-приложение, которое будет отображать изображения. Первоначально я использовал формат blob для хранения моих изображений в базе данных, однако от исследования здесь Люди предложите использовать файловую систему. Моя проблема: я не могу отобразить изображение. Это может быть очень маленькая ошибка или даже плохая ссылка на расположение файлов, но я не могу заставить ее работать. Это небольшой проект, который я надеюсь усовершенствовать и, надеюсь, создать своего рода фотогалерею. Я запускаю это приложение на локальном хосте.

У меня возникла проблема с отображением изображений из файловой системы.

// index.php
<form action="process.php" method="post" enctype="multipart/form-data">
<input type="file" name="image" />
<input type="submit" name="submit" value="Upload" />
</form>

Затем моя форма приводит к странице процесса, на которой выполняется запрос.

  <?php
 // process.php

 // connect to the database
 include 'connection.php';
 // take in some file data
 $filename =$_FILES['image']['name'];
 // get the file extension
 $extension = strtolower(substr($filename, strpos($filename, '.')+1));

// if the file name is set
if(isset($filename)){

// set save destination
$saved ='images/'; 

// rename file 
$filename = time().rand().".".$extension;

$tmp_name=$_FILES['image']['tmp_name'];
// move image to the desired folder
if(move_uploaded_file($tmp_name, $saved.$filename)){ 
echo "Success!";

// if success insert location into database
$insert="INSERT INTO stored (folder_name,file_name) VALUES('$saved',   '$filename')";
// if the query is correct
if($result=mysqli_query($con,$insert)){
echo "DONE";
echo"</br>";
// attempt to print image
echo "<img src=getimage.php?file_name=$filename>";
}

}
}

else{
 echo "Please select a photo!!";
}
?>

Теперь, как вы видите, у меня есть тег <img>. Чтобы попытаться научиться, я пытался просто отобразить недавно загруженное изображение. Чтобы попытаться сделать это, я создал файл getimage.

<?php
 //getimage.php

// set the page to display images
header("Content-Type: image/jpeg");

include "connection.php";

// get requested filename
$name = ($_GET['file_name']);

$query = "SELECT * FROM stored WHERE file_name=$name";

$image = mysqli_query($con,$query);

$row = mysqli_fetch_array($image,MYSQLI_ASSOC);
$img = $row['file_name'];

echo $img;
?>    

Моя структура базы данных выглядит следующим образом: имя базы данных = db_file.
имя таблицы = сохранено. columns = имя_папки, имя_файла

Опять же, это всего лишь небольшой проект, поэтому я знаю, что мне придется изменить базу данных, если я захочу создать более эффективное приложение.

  • 0
    Что не работает, как ожидалось? Пожалуйста, дайте более подробное описание вашей проблемы. ;) Может быть, вы можете протестировать отдельные части вашего кода.
  • 1
    Вызовы соединения с базой данных в скрипте getimage.php кажутся избыточными в приведенном выше коде - вы уже определили имя изображения в приведенном выше коде.
Показать ещё 6 комментариев
Теги:

1 ответ

-1
Лучший ответ

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

изменение

$img = $row['file_name'];

в

$img = $row['folder_name'] . '/' . $row['file_name'];

проверьте свой <img> чтобы увидеть, присутствует ли правильный URL-адрес. Вы можете или не нуждаться в "/", это зависит от того, как вы сохранили имя папки. Возможно, вам потребуется добавить доменное имя. Просто недостаточно информации знать, что нужно.

Ваш <img> должен выглядеть так:

<img href="http://www.yourdomain.com/folder name/file name">

в конце

  • 0
    Спасибо за ответ. Мой файл getimage теперь выглядит так. $ image = mysqli_query ($ con, $ query); // получить доступ к ассоциативному массиву $ row = mysqli_fetch_array ($ image, MYSQLI_ASSOC); $ img = $ row ['имя_папки']. '/'. $ Строки [ 'имя_файла']; echo $ img; Однако я все еще получаю значок сломанного изображения в Chrome.
  • 0
    @DetectiveClarke: команда echo просто печатает папку и имя файла. Посмотрите на вашу файловую систему, если этот файл действительно существует и на него ссылаются правильно. Я предлагаю вам добавить имена файлов в ваши скрипты выше. Также укажите, что именно вы просматриваете в браузере.
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню