1

pycurl を使用して put 経由でファイルをアップロードし、python cgi スクリプトを使用してサーバー側でファイルを受信して​​います。基本的に、サーバー側のコードは次のとおりです。

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

これはテキストでは機能するようですが、バイナリ ファイルでは機能しないようです (私は Windows を使用しています)。バイナリ ファイルでは、約 10kb から 100kb を受信した後、stdin.read を実行するループが壊れます。何か案は?

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

cgi の代わりにmod_wsgiを使用します。正しく開かれたアップロード用の入力ファイルが提供されます。

于 2009-05-08T10:15:11.433 に答える