我正在使用pycurl通过put和python cgi脚本上传文件,以便在服务器端接收文件。本质上,服务器端的代码是:
while True:
next = sys.stdin.read(4096)
if not next:
break
#.... write the buffer
这似乎适用于文本,但不适用于二进制文件(我在Windows上)。 对于二进制文件,执行stdin.read的循环在接收到大约10kb到100kb之后会中断。有什么想法吗?
答案 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。它将为您提供正确打开的上传的输入文件。