Comment vérifier si un fichier (non géré) existe?

18

Je ne trouve pas de fonction API Drupal dans D7 qui me dise s'il existe un fichier (non géré). D6 avait un fichier_check_location mais pas pour 7.

Comment vérifier si un fichier (non géré) existe?

uwe
la source

Réponses:

35

Vous pouvez simplement utiliser l'ancienne fonction PHP standard des marais file_exists()si je vous comprends bien:

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

Cela fonctionne également pour les chemins normaux (absolus), par exemple:

$path = '/var/www/drupal/sites/default/files/images/an-image.jpg';
if (file_exists($path)) {
  // Do something
}
Clive
la source
Clive à la rescousse, merci! Puis-je vous embaucher? ;-)
uwe
6
@MotoTribe Dépend de ce que vous offrez;)
Clive
Pourquoi ça marche? Je viens de tester cela avec du PHP simple et une poignée de flux jetée file_exists()et cela ne fonctionne pas . Une explication?
kaiser
Parce que les flux ont été correctement enregistrés par Drupal @kaiser. Voir php.net/manual/en/wrappers.php
Clive
@Clive J'espérais que tu pourrais me diriger vers la source dans Drupal. Je connais le reste et je ne peux pas travailler dans un test PHP simple, c'est pourquoi j'ai demandé. Edit: NVM, les a trouvés
Kaiser
3

Je ne sais pas quel est votre cas d'utilisation spécifique, mais vous n'aurez peut-être pas besoin de vérifier si le fichier existe.

Les fonctions file_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive et file_unmanaged_save_data vérifient si le fichier existe et retournent false si ce n'est pas le cas.

Vous pouvez trouver le code source dans drupal / includes / file.inc et y jeter un œil.

Dan Meigs
la source
3

Vous devez utiliser la fonction drupal:

file_destination ($ uri, FILE_EXISTS_ERROR)

et vérifie

if (!file_destination($uri, FILE_EXISTS_ERROR)) {
  // The file exist
  // Do something
} 
Ehud Shahak
la source
1
Il fonctionnera comme file_destination()utilisations file_exists()fonction
milkovsky