Domanda

Sto usando pycurl per caricare un file tramite script put e python cgi per ricevere il file sul lato server. In sostanza, il codice sul lato server è:

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

Sembra funzionare con il testo, ma non con i file binari (sono su Windows). Con i file binari, il ciclo che esegue stdin.read si interrompe dopo aver ricevuto qualcosa tra 10kb e 100kb. Qualche idea?

È stato utile?

Soluzione

Devi eseguire Python in modalità binaria. Cambia il tuo script CGI da:

#!C:/Python25/python.exe

o qualunque cosa dica a:

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

Oppure puoi farlo programmaticamente in questo modo:

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

prima di iniziare a leggere da stdin .

Altri suggerimenti

Utilizza mod_wsgi invece di cgi. Ti fornirà un file di input per il caricamento che è stato aperto correttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top