NikFaraday
@NikFaraday
Student full-stack Developer

Как проверить наличие файла существования?

Здравствуйте!

Странный вопрос, не знал как более корректно задать его. В чём проблема: есть у меня список файлов (тег a), которые отсылаются сразу на файл (В href задан прямой путь к файлу). При клике открывается модальное окно куда выводится изображение из указанного файла (Задействован плагин).

Само понятие файла в системе такое: есть сам физический файл, который хранится на сервере в файловой системе. Есть соответствующие записи в БД о их местонахождении т.д.

Прикол в том, что если удалить физический файл, а запись в БД нет, то при выводе списка файлов критических ошибок не будет. Но когда попытаться открыть файл, плагин ничего не выдаст (понятно), а в консоль выведет следующую ошибку:
63c994d423e37886219113.png

Важно отметить, что доступ идёт на прямую к файлу, а не на сервер с запросом на файл (Важно понимать). Возможно ли как-то это отследить и вывести ошибку об отсутствии файла (Ну и там не сервер кинуть запрос об удалении записи в БД и т.д. и т.п.)?
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
Прикол в том, что если удалить физический файл, а запись в БД нет,
то рано или поздно будешь сожалеть что написал кривой г-код. Это мы вроде как поняли.

Важно отметить, что доступ идёт на прямую к файлу, а не на сервер с запросом на файл
Ну да, это "редкий" случай. Важно понимать.

Возможно ли как-то это отследить и вывести ошибку об отсутствии файла (Ну и там не сервер кинуть запрос об удалении записи в БД и т.д. и т.п.)?
Возможно. Достаточно добавить проверку на file_exists(), только пути надо указывать серверные (Важно понимать), так как поведение в случае запроса через веб адрес зависит от настроек окружения.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
трай кэтч и следите за 404
ну коммон это же просто как отнять конфетку у ребенка
Ответ написан
@Wordstat202323
Для отслеживания и вывода ошибки об отсутствии файла вы можете использовать try-catch блок с функцией file_exists(). Кроме того, вы можете проверить состояние запроса через $_SERVER['REQUEST_STATUS']. Пример кода может выглядеть следующим образом:

try {
// Проверяем, существует ли файл
if (file_exists($file)) {
// Открываем модальное окно с изображением
} else {
// Проверяем, был ли запрос отправлен успешно
if ($_SERVER['REQUEST_STATUS'] == 404) {
// Выводим сообщение об ошибке
echo 'Файл не найден!';
}
}
} catch (Exception $e) {
// Выводим сообщение об ошибке
echo $e->getMessage();
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы