2012-01-01 26 views
0

我正在使用CakePHP 2.0.4,PHP 5.3.1,Apache 2.2.14。CakePHP名稱中包含特殊字符的圖像不會顯示

例如:文件名是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,但它與文件名brokes如F#M〜1.gif,B(7)〜1.gif等

寄託都被工作確定在純PHP編碼版本中。現在,它不適用於CakePHP。

有沒有人有線索?

+0

最簡單的解決方法是不允許文件名中包含不常用的字符。最好堅持[a-zA-Z0-9 \ ._-] – GordonM 2012-01-01 18:41:35

+0

GordonM,我相信你是對的。但是因爲它是在純php版本中工作的,所以我意識到在CakePHP中也可以工作。 順便說一句,圖像文件名是自動生成的,然後我可以重構引擎生成這種方式。但我真的很想知道爲什麼不行。如果我放棄的話,我會讓你知道!呵呵 – colares 2012-01-01 20:55:49

+0

恩,謝謝你的回覆,夥計們。我選擇重做圖像的名稱(它的腳本),這次友好。爲了記錄,我發現這個問題的這個不錯的鏈接:http://playground.zaplabs.com/sandbox/qa/stackexchange/serverfault/295664/。但我認爲這是我的情況的一個不必要的開銷。 – colares 2012-01-02 23:46:10

回答

0

您似乎是雙重編碼它,F#7m7~1.gif的右側urlencode是F%237m7~1.gif而不是F%2523m7~1.gif。只要刪除其中的一個。

缺少控制器錯誤是因爲你的服務器上沒有這樣的文件,所以Cake認爲你試圖在Chord插件中調用一個ImgController。嘗試http://myapp.localhost/chord/img/chords/F%237m7~1.gif,它應該工作。

無論如何,正如@GordonM指出的那樣,最好使用普通字符來保存文件名。

+0

嗨!感謝您的回覆!好點子!但我也嘗試過一種編碼,沒有編碼的事件,但它仍然無法使用。 – colares 2012-01-01 21:01:27

+0

所以你說當你在瀏覽器中加載這個http://myapp.localhost/chord/img/chords/F%237m7~1.gif它不起作用? – luchomolina 2012-01-01 22:03:36

+0

是的,它不起作用。哦,這個例子是F#m7〜1.gif 我試過http://myapp.localhost/chord/img/chords/F%23m7~1.gif – colares 2012-01-01 22:16:41

相關問題