2014-06-08 55 views
8

我正在使用Google App Engine和Python 2.7,並試圖將svg文件用作精靈表。Google App Engine正在發送帶有錯誤MIME類型的SVG

由於某些原因,在Win7和Ubuntu上可以正常工作,但不能在Vista或Mac上使用(在每種情況下都使用最新的Chrome和Firefox)。

這裏發送MIME類型的「application/octet-stream」,瀏覽器會提示下載它,而不是顯示它。

我試圖重寫MIME類型在我的app.yaml這樣的:

- url: /img/.*\.svg 
    static_dir: public/img 
    mime_type: image/svg+xml 

- url: /img 
    static_dir: public/img 

但是這並沒有改變任何東西。

我也通過自己的網址試圖對SVG-文件請求路由這樣

- url: /img/svg 
    static_dir: public/img 
    mime_type: image/svg+xml 

- url: /img 
    static_dir: public/img 

但是結果與MIME類型「IMG/PNG」正在發送的文件中,因此瀏覽器將在至少嘗試來顯示它,但不能。

只是爲了確保,我想每個組合表示,也與頭選項:

- url: /img/svg 
    static_dir: public/img 
    http_headers: 
    mime-type: image/svg+xml 

沒有成功。

請幫忙嗎?

[編輯]

一些更多的測試後,它似乎是在Ubuntu使用本地應用程序,發射器,它發送SVG作爲text/html和部署時,它使用application/octet-stream,不管是什麼我把應用程序。 YAML。

有沒有人有這方面的經驗?我可以解決這個問題的唯一方法就是直接將svg-code插入到頁面中,這很吸引人。這是一個圖形,我想這樣對待它。

[更多編輯]

最後,我把這個在YAML文件和它似乎工作:

- url: /img/.*\.svg 
    static_dir: public/img 
    http_headers: 
    content_type: image/svg+xml 

- url: /img 
    static_dir: public/img 
+0

請張貼編輯於你的OP與完整的.yaml代碼包括答案? –

回答

8

嘗試:

http_headers: 
    content-type: image/svg+xml 
+0

謝謝,這似乎很好!任何想法爲什麼它在不同的客戶端計算機上表現如此不同? – HumanCatfood

+1

使用不正確的MIME類型提供響應總是會產生不可預知的結果。有些客戶會嘗試猜測;它們對於猜測的工作原理都有不同的規則,有些可能依賴操作系統支持來進行猜測和/或顯示。 AppEngine無法猜測正確的MIME類型會更加嚴重;這在這種情況下似乎很簡單。 – flamingcow

+0

爲什麼'.yaml'文件中的'mime_type'標誌不起作用?它在他們的文檔中:https://cloud.google.com/appengine/docs/python/config/appconfig#Python_app_yaml_Static_file_handlers看起來像一個GAE錯誤。 – speedplane