不显示名称中包含特殊字符的CakePHP图像

时间:2012-01-01 17:11:35

标签: php cakephp chars

我正在使用CakePHP 2.0.4,PHP 5.3.1,Apache 2.2.14。

例如:文件名是F#7m7~1.gif。它确实存在,路径和文件名是正确的。

在打印HTML标签之前,我使用urlencode()对其进行编码,标签如下:

    <img src="/chord/img/chords/F%2523m7~1.gif" alt="F#m7">

但是图片没有加载。 ('Chord'是CakePHP插件)

我还尝试直接在浏览器http://myapp.localhost/chord/img/chords/F%2523m7~1.gif上加载它,但我得到的是:“缺少控制器错误:无法找到Chord.ImgController。”

一切正常,文件为A~1.gif,但它以文件名为例,如F#m~1.gif,B(7)~1.gif等。

在纯PHP编码版本中,Everthing工作正常。现在,它不在CakePHP上工作。

有人有线索吗?

1 个答案:

答案 0 :(得分:0)

您似乎对其进行了双重编码,F#7m7~1.gif的正确urlencode为F%237m7~1.gif,而不是F%2523m7~1.gif。只需删除其中一个。

Missing Controller错误只是因为你的服务器上没有这样的文件,所以Cake认为你正试图在Chord插件中调用ImgController。试试http://myapp.localhost/chord/img/chords/F%237m7~1.gif,它应该有用。

无论如何,正如@GordonM指出的那样,最好坚持使用普通字符作为文件名。