Como verificar se existe um arquivo (não gerenciado)?

18

Não consigo encontrar uma função da API Drupal no D7 que informa se existe um arquivo (não gerenciado). D6 tinha um arquivo_check_location, mas não para 7.

Como verificar se existe um arquivo (não gerenciado)?

uwe
fonte

Respostas:

35

Você poderia usar a antiga função PHP padrão do pântano, file_exists()se eu entendi direito:

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

Isso também funciona para caminhos normais (absolutos), por exemplo:

$path = '/var/www/drupal/sites/default/files/images/an-image.jpg';
if (file_exists($path)) {
  // Do something
}
Clive
fonte
Clive para o resgate novamente, obrigado! Posso te contratar? ;-)
uwe
6
@MotoTribe Depende de quanto você está oferecendo;)
Clive
Por que isso funciona? Acabei de testar isso com PHP simples e um identificador de fluxo jogado file_exists()e ele não funciona. Alguma explicação?
Kaiser #
Porque os fluxos foram registrados corretamente pelo Drupal @kaiser. Veja php.net/manual/en/wrappers.php
Clive
@Clive Eu esperava que você pudesse me indicar a fonte do Drupal. O resto eu sei e não consigo trabalhar em um teste PHP simples, por isso perguntei. Edit: nvm, found them
kaiser
3

Não sei qual é o seu caso de uso específico, mas talvez você não precise verificar se o arquivo existe.

As funções file_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive e file_unmanaged_save_data verificam se o arquivo existe e retornam false se não existir.

Você pode encontrar o código fonte em drupal / includes / file.inc e dar uma olhada.

Dan Meigs
fonte
3

Você deve usar a função drupal:

file_destination ($ uri, FILE_EXISTS_ERROR)

e verifique

if (!file_destination($uri, FILE_EXISTS_ERROR)) {
  // The file exist
  // Do something
} 
Ehud Shahak
fonte
11
Ele vai funcionar como file_destination()usos file_exists()função
milkovsky