如何使用Python BaseHTTPServerRequestHandler do_GET方法提供图像内容类型?

Bra*_*yon 5 python basehttpserver

我正在使用BaseHTTPServer来提供Web内容.我可以提供内容类型'text/html'或'text/css'甚至'text/js',并在浏览器端呈现.但是当我尝试时

self.send_header('Content-type', 'image/png')

对于.png文件,它根本不呈现.

这是一个示例:

                    if self.path.endswith(".js"):
                            f = open(curdir + sep + self.path)
                            self.send_response(200)
                            self.send_header('Content-type',        'text/javascript')
                            self.end_headers()
                            self.wfile.write(f.read())
                            f.close()
                            return
Run Code Online (Sandbox Code Playgroud)

这适用于javascript

                    if self.path.endswith(".png"):
                            f=open(curdir + sep + self.path)
                            self.send_response(200)
                            self.send_header('Content-type',        'image/png')
                            self.end_headers()
                            self.wfile.write(f.read())
                            f.close()
                            return
Run Code Online (Sandbox Code Playgroud)

当我为客户端标记时,这似乎不会呈现图像内容.它看起来像一个破碎的图像.

有任何想法吗?

Liq*_*ire 9

您已在文本模式而不是二进制模式下打开文件.任何换行符都可能搞砸了.请改用:

f = open(curdir + sep + self.path, 'rb')
Run Code Online (Sandbox Code Playgroud)