0

我正在使用 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 编码版本中一切正常。现在,它不适用于 CakePHP。

有没有人有线索?

4

1 回答 1

0

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

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

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

于 2012-01-01T20:06:10.090 回答