2013-01-17 21 views
0

我试着去检查文件是否在我的/上传symfony中存在的文件夹2.File_exist返回false所有的时间上的Symfony 2

$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()); 

这总是返回假的,我调试所有的字符串和路径是正确的,手动检查该文件是否存在。有任何想法吗?

+0

'var_dump($ file)'的输出是什么? –

+0

@mamdouhalramadan string(30)“/uploads/hd/50f7d8c01f093.jpeg” – DomingoSL

+1

愚蠢的建议,但可能会有所作为。试试:'$ this-> getAssetUrl('uploads/hd /'。$ gift-> getImage());'! –

回答

4

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

如果你放置你的项目位于/ var/WWW/myProject的,路径file_exists预计为/ var/WWW/myProject的/网站/上传/ HD /,但它只会/上传/ HD。它会在您的根目录中查找名为“uploads”的文件夹。第一个斜杠(“/”)表示PHP的“系统根目录”,而它表示浏览器的“根URI”。

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

+0

谢谢!你能否详细说明你的答案,文件存在路径应该如何呢? – DomingoSL

+0

刚刚添加了该信息。请让我知道这是否有效。如果没有,我会想办法。 –

0

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

你必须提供file_exists与(相对或绝对)的路径,所以,你应该使用类似:

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

当然,适应的路径您的需求。

相关问题