WEB开发网
开发学院软件开发Python CherryPy发布静态文件的方法 阅读

CherryPy发布静态文件的方法

 2008-09-30 13:10:01 来源:WEB开发网   
核心提示:可以使用两种方式发布CherryPy中的静态文件,比如发布图片或者其他不需要修改(by gashero)的静态文件,CherryPy发布静态文件的方法,·发布一个目录,如/images,default方法多加的**o参数用于屏蔽多余的参数,此处只做了一个文件的返回,需要修改CherryPy的配置,可以加入

可以使用两种方式发布CherryPy中的静态文件,比如发布图片或者其他不需要修改(by gashero)的静态文件。

·发布一个目录,如/images。需要修改CherryPy的配置,可以加入如下的一条来发布。

'/images':{
  'static_filter.on':True,
  'static_filter.dir':'/images'
  }, #by gashero
  如果是需要发布仅仅一个文件,则如下方法:
'/vrml.wrl':{
  'static_filter.on':True,
  'static_filter.file':'new.wrl'
  }
  按照这种发布时,发布的文件名可以随意修改,客户端所见到的文件名并非真正的文件名。

·按照返回文件句柄的方式。有些文件按照如上的方式在客户端是无法正确的识别文件类型的,比如上例发布的VRML源文件。所以偶尔需要这种底层一点,但是功能强大的方式-返回文件句柄。

返回文件句柄一般是使用default方法,从第一个参数获得客户端请求的文件名,然后判断此文件名是否允许响应,再根据对应文件名打开文件句柄并通过return返回此句柄。

但是注意的是,客户端浏览器(by gashero)并不是使用扩展名来识别文件类型的,而是通过HTTP头字段的'Content-Type'的MIME类型来识别的。所以对于一些怪异的文件类型,需要自己指定MIME类型才可以正确的显示。

如下的完整例子是用于返回一个VRML源文件的,并且客户端可以正确的显示。default方法多加的**o参数用于屏蔽多余的参数。此处只做了一个文件的返回,可以根据需要多加几个elif。

  @cherrypy.expose #by gashero
    def default(self,filename,**o):
      if filename=='vrml.wrl':
        cherrypy.response.headerMap['Content-Type']='application/x-vrml'
        f=open('new.wrl','rb')
        return f

散会

Tags:CherryPy 发布 静态

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接