Come verificare se esiste un file (non gestito)?


18

Non riesco a trovare una funzione API Drupal in D7 che mi dice se esiste un file (non gestito). D6 aveva un file_check_location ma non per 7.

Come verificare se esiste un file (non gestito)?

Risposte:


35

Potresti semplicemente usare la vecchia funzione PHP della palude file_exists()se ti capisco bene:

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

Questo funziona anche con percorsi normali (assoluti), ad esempio:

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

Rivolgiti di nuovo in soccorso, grazie! Posso assumerti? ;-)
Uwe

6
@MotoTribe Dipende da quanto stai offrendo;)
Clive

Perché funziona? Ho appena provato questo con un semplice PHP e viene inserito un handle di flusso file_exists()e non funziona. Alcuna spiegazione?
Kaiser

Perché i flussi sono stati correttamente registrati da Drupal @kaiser. Vedi php.net/manual/en/wrappers.php
Clive

@Clive Speravo che tu potessi indicarmi la fonte in Drupal. Il resto lo so e non riesco a lavorare in un semplice test PHP, quindi ho chiesto. Modifica: nvm, li
Kaiser

3

Non so quale sia il tuo caso d'uso specifico, ma potresti non aver bisogno di controllare per vedere se il file esiste.

Le funzioni file_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive e file_unmanaged_save_data controllano se il file esiste e restituiscono false in caso contrario.

Puoi trovare il codice sorgente in drupal / Includes / file.inc e dare un'occhiata.


3

Dovresti usare la funzione drupal:

file_destination ($ uri, FILE_EXISTS_ERROR)

e controlla

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

1
Funzionerà come file_destination()usi file_exists()la funzione
milkovsky
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.