我知道这个问题之前已经被问过,例如在这里:How do I serve image Content-types with Python BaseHTTPServerRequestHandler do_GET method? ,但是“将文件打开模式设置为二进制”的典型答案对我不起作用。
我正在使用 Windows。所有对文本数据(html、js、css)的请求都得到满足,没有任何问题。图像和字体请求未得到正确满足。返回的响应总是包含大约 150 个字节(但实际上应该是大约 50k)。因此,我想基本上是空的响应,缺少图像和字体。到目前为止,我在 Linux 下使用相同的代码没有任何问题:
content = open(content_path, 'rb')
...
self.send_response(200)
self.send_header('Content-type', 'image/jpeg')
self.end_headers()
self.wfile.write(content.read)
content.close()
我最初使用“打开”的默认模式,在阅读了对类似问题的回复后,我添加了二进制标志,假设它可以解决问题,但事实并非如此。这里可能有一些编码问题吗?同样,这在 Linux 下确实有效。这是打印到控制台的“内容”的值:
<open file [my_file_path], mode 'rb' at 0x02A9BA18> with mime-type image/jpeg
万一它是相关的,我可能还应该提到,在应用程序的早期,这些图像都已由 python PIL 库调整大小。任何帮助表示赞赏。