¿Cómo verificar si existe un archivo (no administrado)?

18

No puedo encontrar una función de API de Drupal en D7 que me indique si existe un archivo (no administrado). D6 tenía un file_check_location pero no para 7.

¿Cómo verificar si existe un archivo (no administrado)?

uwe
fuente

Respuestas:

35

Podrías usar la antigua función PHP estándar de bog file_exists()si te entiendo bien:

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

Esto también funciona para rutas normales (absolutas), por ejemplo:

$path = '/var/www/drupal/sites/default/files/images/an-image.jpg';
if (file_exists($path)) {
  // Do something
}
Clive
fuente
Clive al rescate nuevamente, ¡gracias! ¿Puedo contratarte? ;-)
Uwe
66
@MotoTribe Depende de cuánto estés ofreciendo;)
Clive
¿Por qué funciona esto? Acabo de probar esto con PHP simple y un controlador de flujo arrojado file_exists()y no funciona. Alguna explicación?
Kaiser
Porque las transmisiones han sido registradas correctamente por Drupal @kaiser. Ver php.net/manual/en/wrappers.php
Clive
@Clive Espero que puedas señalarme la fuente en Drupal. El resto lo sé y no puedo trabajar en una prueba PHP simple, por lo tanto, pregunté. Editar: nvm, los encontré
kaiser
3

No sé cuál es su caso de uso específico, pero es posible que no necesite verificar si el archivo existe.

Las funciones file_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive y file_unmanaged_save_data verifican si el archivo existe y devuelven false si no es así.

Puede encontrar el código fuente en drupal / includes / file.inc y echar un vistazo.

Dan Meigs
fuente
3

Debe usar la función drupal:

file_destination ($ uri, FILE_EXISTS_ERROR)

y verifica

if (!file_destination($uri, FILE_EXISTS_ERROR)) {
  // The file exist
  // Do something
} 
Ehud Shahak
fuente
1
Funcionará como la función de file_destination()usosfile_exists()
milkovsky