Apache + Python:提供binairy文件

时间:2016-02-24 19:03:07

标签: python apache

我有一个带有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)

提前致谢!!

1 个答案:

答案 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()以获得干净的输出。