在Tornado Web中更改特定静态文件的MIME类型
我在服务器的/static/目录下有一堆文件,名字像这样:
Slide0.html Slide121.html Slide143.html Slide165.html Slide187.html Slide208.html
Slide28.html Slide4.html Slide71.html Slide93.html
Slide100.html Slide122.html Slide144.html Slide166.html Slide188.html Slide209.html
我在同一个域名下定期获取这些文件,并把它们插入到一个iframe中,它们的作用就是显示一些图片,但浏览器却给出了以下错误:
Resource interpreted as Image but transferred with MIME type text/html: "http://localhost:8888/static/Slide66.html".
我尝试过继承staticfilehandler,但没有成功:
class StaticHandler(tornado.web.StaticFileHandler):
def get(self, path):
abspath = os.path.abspath(os.path.join(self.root, path))
mime_type, encoding = mimetypes.guess_type(abspath)
if mime_type:
self.set_header("Content-Type", mime_type)
if 'Slide' in abspath:
self.set_header('Content-Type',"image/jpg" )
但是错误依然存在,我该怎么调整呢?
2 个回答
0
问题在于你的浏览器正在尝试把“Slide66.html”当作图片来加载。你可能在生成HTML代码时,用“Slide66.html”作为“img”标签的“src”属性。
Tornado的做法是对的。如果“Slide66.html”真的是一张图片,那它应该是“Slide66.jpg”。如果它确实是HTML文件,那就不能用作图片的“src”。
6
在Tornado 3.1中,你可以创建一个新的类,继承自StaticFileHandler
,并且重写get_content_type()
这个方法。
class StaticJSONFileHandler(tornado.web.StaticFileHandler):
def get_content_type(self):
return 'application/json'