1

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

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

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

4

2 回答 2

3

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

#!C:/Python25/python.exe

或它所说的任何内容:

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

或者您可以像这样以编程方式执行此操作:

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

在开始阅读之前stdin

于 2009-05-08T09:30:14.333 回答
0

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

于 2009-05-08T10:15:11.433 回答