Django(在centos上)提供SVG文件下载

时间:2014-03-18 05:54:42

标签: django svg

我有一个Django应用程序,它正在提供一个静态SVG文件(我将我的浏览器直接指向:http://myserver.com/static/my.svg)。我正在使用Django附带的内置网络服务器。我从Ubuntu服务器运行此应用程序,它运行良好。当我说“工作正常”时,我的意思是svg文件直接显示在浏览器窗口上(适用于Firefox和Chrome)。但是,当我在Centos服务器上运行相同的Django应用程序时,Firefox和Chrome都会提示用户保存/下载svg文件。

在完全相同的Centos服务器上,我尝试使用Apache作为网络服务器提供完全相同的svg文件,瞧,文件再次直接显示在浏览器上(没有任何提示)!

我只能将行为上的差异归结为Django上的内置网络服务器。它以某种方式向浏览器发送内容,使浏览器认为文件需要下载而不是直接呈现。

在Centos上使用Django(可能是某些设置),我需要做些什么特别的事情吗?我的centos版本,Django和Python版本如下所示:

Centos发布

LSB Version:    :core-4.0-ia32:core-4.0-noarch:graphics-4.0-ia32:graphics-4.0-noarch:printing-4.0-ia32:printing-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 5.7 (Final)
Release:        5.7
Codename:       Final

Django和Python

(myenv)[root@foo bar]# python
Python 2.7.1 (r271:86832, Mar 17 2014, 11:59:55)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-54)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> django.VERSION
(1, 6, 2, 'final', 0)

由于

1 个答案:

答案 0 :(得分:0)

虽然避免使用Django的内置网络服务器可以解决这个问题,但我在另一篇文章中找到了最相关的答案:Can the Django dev server correctly serve SVG?。这个问题的正确答案是在Centos中/etc/mime.types文件没有svg文件的条目。以下是Ubuntu的相应条目:

> cat /etc/mime.types  | grep svg
image/svg+xml                                   svg svgz

因此,此问题的解决方案之一是:

  1. 将条目添加到/etc/mime.types文件
  2. 将以下代码添加到Django中的“settings.py”文件中:

    import mimetypes
    mimetypes.add_type("image/svg+xml", ".svg", True)
    mimetypes.add_type("image/svg+xml", ".svgz", True)
    
  3. 感谢您的所有评论。