как я могу запретить file_get_contents создавать пустой файл при использовании в качестве условия теста в условии if?
Пустой файл создается независимо, что вызывает последующий вызов другого метода, чтобы getimagesize () завершился с ошибкой.
Проблема в том, что, поскольку у меня есть моя настройка кода, при первом вызове будет определяться сохранение изображения или отображение ранее сохраненного изображения. Это частично зависит от наличия файла. Когда создается пустой файл, это вызывает проблемы при вызове моего кода в последующие моменты времени.
Самый простой способ добавить проверку, если файл существует и больше 0?
Независимо от того, работает ли мой код, file_get_contents все равно выдаст ошибку. Эта ошибка учитывается и обрабатывается (по условию «мое»), поэтому я хотел бы избежать ошибки, прерывающей вывод моего приложения, если это возможно. Есть ли способ отключить это, не скрывая фактических ошибок?
if (file_put_contents($imageDir . $pk . '.jpg', file_get_contents($pic_url))) { return $imageDir . $pk . '.jpg'; } else { return 'removed.jpg'; }
Это не файл_get_contents (), который создает пустой файл, это file_put_contents ().
file_put_contents () создаст файл, даже если второй параметр пуст. Следовательно, пустой файл.
Сначала вам нужно проверить файл.
Самым простым решением было бы переместить file_put_contents () внутри условного выражения, чтобы он создавал только файл, если есть содержимое.
if (($filecontents = file_get_contents($pic_url)) !== false) { file_put_contents($imageDir . $pk . '.jpg', $filecontents); return $imageDir . $pk . '.jpg'; } else { return 'removed.jpg'; }
Теперь это все еще оставляет вам проблемы.
Проверьте, существует ли файл с помощью file_exists
:
if (file_exists($pic_url)) { $contents = file_get_contents($pic_url); if (!empty($contents)) { file_put_contents($imageDir . $pk . '.jpg', $contents); return $imageDir . $pk . '.jpg'; } } return 'removed.jpg';