Python cgi 与 stdin
我正在使用pycurl来通过put上传一个文件,同时在服务器端用python的cgi脚本来接收这个文件。简单来说,服务器端的代码是:
while True:
next = sys.stdin.read(4096)
if not next:
break
#.... write the buffer
这个方法在处理文本文件时似乎没问题,但在处理二进制文件时就不行了(我在用Windows)。对于二进制文件,读取的循环在接收到大约10kb到100kb的数据后就会中断。有没有什么建议?
2 个回答
0
使用 mod_wsgi 来代替 cgi。这样可以确保你上传的文件能够正确打开。
3
你需要以二进制模式运行Python。把你的CGI脚本从:
#!C:/Python25/python.exe
或者无论它写的是什么,改成:
#!C:/Python25/python.exe -u
或者你也可以像这样通过代码来实现:
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
在开始从stdin
读取之前。