我试图检查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());
这总是返回false,我调试了所有字符串并且路径是正确的,手动检查文件是否存在。有什么想法吗?
答案 0 :(得分:4)
getAssetUrl
只打印您正在打印的资源的URI,而不是实际位置。
如果您将项目放在/ var / www / myProject,路径file_exists
预期为/ var / www / myProject / web / uploads / hd /,但它只会获取/ uploads / hd。它会在根目录中查找名为“uploads”的文件夹。第一个斜杠(“/”)表示PHP的“system root dir”,而它表示浏览器的“root URI”。
我相信if (file_exists($this->get('request')->getBasePath() . "/uploads/hd/" . $gift->getImage()))
应该做到这一点。
答案 1 :(得分:0)
getAssetUrl
未返回有效的文件名。它会为您提供一个URL。
您必须为file_exists
提供路径(相对或绝对路径),因此,您应该使用以下内容:
$file = dirname(__FILE__).DIRECTORY_SEPARATOR.'..'
.DIRECTORY_SEPARATOR.'..'
.DIRECTORY_SEPARATOR.'uploads'
.DIRECTORY_SEPARATOR.'hd'
.DIRECTORY_SEPARATOR.$gift->getImage();
当然,根据您的需求调整路径。