(Yönetilmeyen) dosyanın olup olmadığını nasıl kontrol edebilirim?


18

D7'de bir (yönetilmeyen) dosya olup olmadığını söyleyen bir Drupal API işlevi bulamıyorum. D6'da file_check_location vardı ancak 7 için değil.

(Yönetilmeyen) dosyanın olup olmadığını nasıl kontrol edebilirim?

Yanıtlar:


35

file_exists()Doğru anlıyorsam , eski bataklık standart PHP işlevini kullanabilirsiniz :

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

Bu aynı zamanda normal (mutlak) yollar için de geçerlidir, örneğin:

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

Tekrar kurtarmaya devam edin, teşekkürler! Seni işe alabilir miyim? ;-)
uwe

6
@MotoTribe Ne kadar teklif verdiğinize bağlıdır;)
Clive

Bu neden işe yarıyor? Ben sadece düz PHP ile bu test edilmiş ve bir dere kolu içine atılmış file_exists()ve öyle değil işi. Herhangi bir açıklama var mı?
kaiser

Çünkü akışlar Drupal @kaiser tarafından düzgün bir şekilde kaydedildi. Bkz. Php.net/manual/tr/wrappers.php
Clive

@Clive Beni Drupal'daki kaynağa yönlendirebileceğini ummuştum. Gerisi biliyorum ve düz bir PHP testinde çalışamıyor, bu yüzden sordum. Düzenleme: nvm, bulundu
kaiser

3

Özel kullanım durumunuzun ne olduğunu bilmiyorum, ancak dosyanın var olup olmadığını kontrol etmeniz gerekmeyebilir.

File_unmanaged_copy, file_unmanaged_move, file_unmanaged_delete, file_unmanaged_delete_recursive ve file_unmanaged_save_data işlevleri dosyanın var olup olmadığını kontrol eder ve yoksa false değerini döndürür.

Kaynak kodu drupal / include / file.inc içinde bulabilir ve bir göz atabilirsiniz.


3

Drupal işlevini kullanmalısınız:

dosya_hedef ($ uri, FILE_EXISTS_ERROR)

ve kontrol et

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

1
file_destination()Kullanım file_exists()işlevi olarak çalışacaktır
milkovsky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.