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?

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 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.


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
} 

1
Il fonctionnera comme file_destination()utilisations file_exists()fonction
milkovsky
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.