2017-08-01 37 views

回答

2

我发现an example using mimetypes所述的WebOb文档中(webapp2的请求和响应是Webob Request/Response objects)。关于mimetypes的文档可以在here找到。 mimetypes是一个内置的python模块将文件扩展名映射到MIME类型。

我发现的例子包括这样的功能:

import mimetypes 
def get_mimetype(filename): 
    type, encoding = mimetypes.guess_type(filename) 
    # We'll ignore encoding, even though we shouldn't really 
    return type or 'application/octet-stream' 

您可以使用该功能在您的处理程序,如下所示:

def FileHandler(webapp2.RequestHandler): 
    # I'm going to assume `path` is a route arg 
    def get(self, path): 
     # set content_type 
     self.response.content_type = get_mimetype(path) 
     with open(path) as f: 
      self.response.write(f.read()) 

注意:在使用python-magic代替mimetypes会工作,以及与可能值得关注的是,正如@ Corn Cornilescu指出的那样。他链接到this SO answer

+0

真棒,完美的作品。 –

1

尝试添加内容类型报头:

my_file = f.read() 
content_type = my_file.headers.get('Content-Type', 'text/html') 

self.response.headers.add_header("Content-Type",content_type) 
self.response.write(my_file) 
+0

问题是代码可能不知道内容类型可能是什么。 –

+0

这*可能*帮助:https://stackoverflow.com/questions/10937350/how-to-check-type-of-files-without-extensions-in-python –

+0

编辑答案。但是,正如Dan所说,Python Magic应该做到这一点。 – GAEfan

相关问题