0

我想用python开发一个简单的web服务器来处理一些简单的http请求。我已经学习了如何响应请求,例如传输 html 页面或传输其他文件。当我传输图像文件时,客户端使用浏览器获取文件,网址如下所示:

http://114.212.82.104:8080/1.png

我设置了'Content-Type = application/x-png'。但是浏览器直接下载文件,并不能在浏览器中显示。不像下图

https://www.baidu.com/img/bd_logo1.png 

它可以显示在浏览器中。如何在浏览器中显示图像?有人能帮我吗?

我知道我可以将图像文件编码为 html 页面来修复它。代码如下:

class RequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):

    def do_GET(self):
        path = os.getcwd()+ self.path
        if os.path.isfile(path):
            with open(path,'rb') as fileTrans:
                content = fileTrans.read().encode('base64').replace('\n','')
            #self.sendContent(200, content)
            self.send_response(200)
            page = "<p>\"fef\"</p><img src=\"data:image/jpg;base64,{0}\"/>"
            contentPage = page.format(content)
            self.send_header('Content-Type', 'text/html')
            self.send_header("Content-Length", str(len(contentPage)))
            self.end_headers()
            self.wfile.write(contentPage)

        else:
            self.sendContent(404,"file do not exists")

但我知道一定有另一种方式,我看到它只是使用的 URL( https://www.baidu.com/ )的源代码

<img hidefocus="true" src="//www.baidu.com/img/bd_logo1.png" width="270" height="129"></div><a href="/" id="result_logo" onmousedown="return c({'fm':'tab','tab':'logo'})">

与我的页面不同:

<p>"fef"</p><img src="data:image/jpg;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAJYCAIAAAB+b3GqAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAvppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTMyIDc5LjE1OTI4NCwgMjAxNi8wNC8xOS0xMzoxMzo0MCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6ODg3NkM1Njg1MzVFMTFFNkE0NkJFNTEzMUFCNzc4RTMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6ODg3NkM1Njc1MzVFMTFFNkE0NkJFNTEzMUFCNzc4RTMiIHhtcDpDcmVhdG9yVG9vbD0iOC4xLjMiPiA8eG1wTU06RG......
4

1 回答 1

0

好的,我想我已经解决了这个问题。只需将标题的属性 - 'Content-Type' 设置为 'image/png' 而不是 'application/x-png'。

于 2017-10-11T04:58:13.103 回答