Як перевірити, чи існує (некерований) файл?


18

Я не можу знайти функцію API Drupal у D7, яка повідомляє мені, чи існує (некерований) файл. D6 мав файл_check_location, але не для 7.

Як перевірити, чи існує (некерований) файл?

Відповіді:


35

Ви можете просто використовувати стару стандартну функцію PHP, file_exists()якщо я правильно вас розумію:

$uri = 'public://images/an-image.jpg';
if (file_exists($uri)) {
  // Do something
}

Це також працює для звичайних (абсолютних) шляхів, наприклад:

$path = '/var/www/drupal/sites/default/files/images/an-image.jpg';
if (file_exists($path)) {
  // Do something
}

Заклик на допомогу ще раз, дякую! Чи можу я вас найняти? ;-)
uwe

6
@MotoTribe Залежить, скільки ви пропонуєте;)
Клайв

Чому це працює? Я щойно тестував це за допомогою простого PHP та ручки потоку, кинутого в file_exists()нього, і це не працює. Будь-яке пояснення?
кайзер

Тому що потоки були належним чином зареєстровані Drupal @kaiser. Дивіться php.net/manual/en/wrappers.php
Клайв

@Clive Я сподівався, що ти можеш вказати мені на джерело в Drupal. Інше, що я знаю і не можу отримати роботу в простому тесті на PHP, тому я запитав. Редагувати: nvm, знайшли їх
кайзер

3

Я не знаю, що стосується конкретного випадку використання, але вам може не знадобиться перевіряти, чи існує файл.

Функції file_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive та file_unmanaged_save_data перевіряють, чи існує файл, і повертають false, якщо це не так.

Ви можете знайти вихідний код в drupal / include / file.inc і подивіться.


3

Ви повинні використовувати функцію drupal:

file_destination ($ uri, FILE_EXISTS_ERROR)

і перевірити

if (!file_destination($uri, FILE_EXISTS_ERROR)) {
  // The file exist
  // Do something
} 

1
Він буде працювати як функція file_destination()використанняfile_exists()
milkovsky
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.