首页 文章

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

提问于
浏览
1

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

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

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

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

Centos Release

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 and 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

    虽然避免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
    

    因此,此问题的解决方案是以下任一项:

    • 将条目添加到/etc/mime.types文件中

    • 将以下代码添加到Django中的“settings.py”文件中:

    import mimetypes
    mimetypes.add_type("image/svg+xml", ".svg", True)
    mimetypes.add_type("image/svg+xml", ".svgz", True)
    

    谢谢你们的评论 .

相关问题