PHP проверить, существует ли file_exex без расширения, тогда Ajax div с соответствующим медиа-тегом (img или video) на основе filepath - PullRequest
0 голосов
/ 02 мая 2020

Первая публикация здесь. Я знаю, что встроенный php не является предпочтительным, но я не преобразовал все свои сценарии в эхо-коды json_encoded для работы в javascript на стороне клиента ... так что на данный момент у меня есть встроенный php.

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

Когда Мой пользователь сначала загружает div (и страницу html), скрипт php циклически перебирает массив и каждый раз выполняет запрос fetch_asso c из sql в базу данных; Он возвращает (media_id #) и распечатывает li с соответствующим носителем, отображаемым рядом с некоторыми другими значениями из запроса.

Я знаю только (media_id) и путь к файлу без расширения. Когда страница загружается в первый раз, все работает отлично, и функция file_exists возвращает корректно.

ПРОБЛЕМА

Когда я AJAX div и делаю запрос снова, потому что пользователь добавил строку в базу данных, новый список распечатывается со всей информацией, НО функция file_exists не распознает точно такие же пути, как раньше, и у меня нет img или видео на странице.

Я копирую / вставляю тот же самый код из исходного div и помещаю его в файл для ajax для повторного запроса и печати новых li.

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

КОД

<?php 

    $result=$conn->query($select);
    $row=$result->fetch_assoc();
?>

<li>

<?php
if ($row['count']>0) {
  echo "<div class='media-container'>";
       $pathname = "uploads/".$row["id"]."media1";
       $testjpg=$pathname.".jpg";
       $testjpeg=$pathname.".jpeg";
       $testpng=$pathname.".png";
       $testmp4=$pathname.".mp4";
     if (file_exists($testjpg)==TRUE || file_exists($testpng)==TRUE || file_exists($testjpeg)==TRUE) {
        echo '<img src="'.$pathname.'">';
     }if(file_exists($testmp4)==TRUE) {
        echo "<video></video>";
     }
  echo "</div>";
}?>

</li>

Я мог бы воспользоваться некоторыми советами о том, как это исправить и как напечатать соответствующие теги на носителях. неизвестные типы носителей.

ВЫХОД

<div class='media-container'>
</div>

ОТЛАДКИ ОТПРАВКИ

, повторяя точный путь к файлу известное изображение в теге <img> работает нормально. Помещение echo'test'; в дело file_exists ничего не дает.

-

Решение (Вроде)

Итак, я уже использовал ошибку html, и я нашел обходной путь, хотя я все еще хотел бы знать, почему я получаю ошибку. PSA это использует JQuery, но javascript тоже работает:

Мое решение

image">
...