Во-первых, не рекомендуется отправлять путь к папке и имя файла через строку запроса. Возможно, кто-то может покопаться, найти и загрузить в систему файлы, которые не предназначены для доступа. Это называется атака обхода пути.
Содержат ли имена папок строку .dir
? Потому что это условие проверяется. Если они этого не делают, то поэтому он всегда идет в состояние else
.
<cfif findNoCase('.dir', folder_name) >
Используйте directoryExists()
для пути к папке и fileExists()
для имени файла, чтобы увидеть, существует ли какой-либо из них, прежде чем пытаться запросить файл.
Лучше было бы сохранить путь к файлу и имя в БД, а затем запросить файл по идентификатору в строке запроса. Файл также должен храниться за пределами Интернета root, чтобы он не находился в общедоступной папке и не мог быть доступен без входа в приложение. Найдя правильный файл, используйте <cfcontent>
, чтобы загрузить файл в браузер.