Python cgi和stdin

时间:2009-05-08 09:26:34

标签: python cgi stdin

我正在使用pycurl通过put和python cgi脚本上传文件,以便在服务器端接收文件。本质上,服务器端的代码是:

while True:
   next = sys.stdin.read(4096)
   if not next:
       break
   #.... write the buffer

这似乎适用于文本,但不适用于二进制文件(我在Windows上)。 对于二进制文件,执行stdin.read的循环在接收到大约10kb到100kb之后会中断。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

您需要以二进制模式运行Python。从以下位置更改CGI脚本:

#!C:/Python25/python.exe

或其说的任何内容:

#!C:/Python25/python.exe -u

或者你可以这样编程:

msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)

开始阅读stdin之前。

答案 1 :(得分:0)

使用mod_wsgi代替cgi。它将为您提供正确打开的上传的输入文件。