0

我试图检查我的 symfony 2 的 /uploads 文件夹中是否存在文件。

    $file = $this->getAssetUrl('/uploads/hd/'.$gift->getImage());
     if(file_exists($file)) return $this->getAssetUrl('/uploads/hd/'.$gift->getImage());
     else return $this->getAssetUrl('/uploads/large/'.$gift->getImage());

这总是返回错误,我调试了所有字符串并且路径正确,手动检查文件是否存在。有任何想法吗?

4

2 回答 2

4

getAssetUrl只会打印您正在打印的任何资源的 URI,而不是实际位置。

如果你把你的项目放在/var/www/myProject,路径file_exists期望是/var/www/myProject/web/uploads/hd/,但它只会得到/uploads/hd。它会在你的根目录中寻找一个名为“uploads”的文件夹。第一个斜杠 ("/") 表示 PHP 的“系统根目录”,而它表示浏览器的“根 URI”。

我相信if (file_exists($this->get('request')->getBasePath() . "/uploads/hd/" . $gift->getImage()))应该做的伎俩。

于 2013-01-17T11:37:10.993 回答
0

getAssetUrl没有返回有效的文件名。它会给你一个 URL。

您必须提供file_exists路径(相对或绝对),因此,您应该使用以下内容:

$file = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'
              .DIRECTORY_SEPARATOR.'..'
              .DIRECTORY_SEPARATOR.'uploads'
              .DIRECTORY_SEPARATOR.'hd'
              .DIRECTORY_SEPARATOR.$gift->getImage();

当然,根据您的需要调整路径。

于 2013-01-17T11:46:55.647 回答