如何检查(非托管)文件是否存在?


18

我在D7中找不到可以告诉我是否存在(非托管)文件的Drupal API函数。D6有一个file_check_location,但没有7。

如何检查(非托管)文件是否存在?

Answers:


35

file_exists()如果我理解正确,则可以只使用旧的沼泽标准PHP函数:

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

这也适用于普通(绝对)路径,例如:

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

克莱夫再次解救,谢谢!我可以雇用你吗?;-)
uwe

6
@MotoTribe取决于您提供多少;)
克莱夫(Clive)

为什么这样做?我只是简单的PHP测试这和流手柄扔到file_exists()它确实没有工作。有什么解释吗?
kaiser

因为流已经被Drupal @kaiser正确注册。参见php.net/manual/en/wrappers.php
Clive

@Clive我希望您能指出我在Drupal中的来源。我知道其余的内容,无法在普通的PHP测试中工作,因此我问。编辑: nvm,找到它们
kaiser

3

我不知道您的特定用例是什么,但是您可能不需要检查文件是否存在。

函数file_unmanaged_copy,file_unmanaged_move,file_unmanaged_delete,file_unmanaged_delete_recursive和file_unmanaged_save_data会检查文件是否存在,如果不存在,则返回false。

您可以在drupal / includes / file.inc中找到源代码并进行查看。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.