我有一个带有python cgi(Python3)的Apache服务器。客户端启动get请求以获取虚拟文件,我需要将有关其用户代理的好文件退回给他。我能够使用文本文件,但是当我尝试回送图像(.jpg)或.zip等binairies文件时,下载的文件似乎已损坏。
当我解析它时,我可以看到b'\x00\x....'
所以我认为字节转换在某处出错了。
我尝试过使用sys.stdout.write
,但它期望str不是字节。我还尝试通过更改内容类型来“播放”标题,但它不起作用。
reqFile = open(filePath,'rb')
content = reqFile.read()
print("Content-Type:image/jpg")
print("Accept-Rangers:byte")
print("Content-Length:"+str(len(content))
print()
print (content)
提前致谢!!
答案 0 :(得分:0)
好的,我发现print()insert' \ n'人物和其他东西。所以,对于binairies文件,我建议使用sys.stdout。
file = open(filePath, "rb")
content = file.read()
length = len(content)
file.close()
print("Content-type:application/x-download")
print("Content-length:%d" % length)
print()
sys.stdout.flush()
sys.stdout.buffer.write(content)
不要忘记执行sys.stdout.flush()以获得干净的输出。