CakePHP Изображения со специальными символами в имени не отображаются - PullRequest
0 голосов
/ 01 января 2012

Я использую 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.

Есть кто-нибудь есть подсказка?

1 Ответ

0 голосов
/ 02 января 2012

Вы, кажется, дважды его кодируете, правильный код urlen для F#7m7~1.gif равен F%237m7~1.gif, а не F%2523m7~1.gif. Просто удалите одну из них.

Ошибка отсутствует контроллер просто потому, что на вашем сервере нет такого файла, поэтому Cake думает, что вы пытаетесь вызвать ImgController, в плагине Chord. Попробуйте http://myapp.localhost/chord/img/chords/F%237m7~1.gif, это должно работать.

В любом случае, как отметил @GordonM, лучше использовать обычные символы для имен файлов.

...